summaryrefslogtreecommitdiffstats
path: root/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse')
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/AppFileLocProvider.java334
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Download.java375
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/DownloadFactory.java100
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/DownloadFactory_1_8.java100
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Download_1_8.java397
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/External.java590
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/ExternalFactory.java100
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/FilePicker.java306
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/FilePickerFactory.java100
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/FilePickerFactory_1_8.java44
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/FilePicker_1_8.java60
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/HelperAppLauncherDialog.java208
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/HelperAppLauncherDialogFactory.java106
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/HelperAppLauncherDialog_1_9.java143
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/InputStream.java129
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Mozilla.java3820
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/PromptDialog.java294
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/PromptService2.java641
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/PromptService2Factory.java100
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/SimpleEnumerator.java114
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/WindowCreator2.java226
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/XPCOM.java2155
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/XPCOMObject.java1031
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/init/GREVersionRange.java22
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/init/XPCOMInit.java71
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsDynamicFunctionLoad.java18
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsEmbedString.java63
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIAppShell.java75
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIAuthInformation.java87
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIBaseWindow.java139
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsICancelable.java47
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsICategoryManager.java67
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIChannel.java119
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIClassInfo.java91
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIComponentManager.java59
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIComponentRegistrar.java91
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIContextMenuListener.java59
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsICookie.java101
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsICookieManager.java55
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsICookieService.java64
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsICookieService_1_9.java59
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsID.java77
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMEvent.java89
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMEventTarget.java55
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMKeyEvent.java299
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMMouseEvent.java87
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMSerializer.java51
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMSerializer_1_7.java51
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMUIEvent.java55
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMWindow.java111
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMWindowCollection.java55
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDataType.java73
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDirectoryService.java55
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDirectoryServiceProvider.java47
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDirectoryServiceProvider2.java47
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDocShell.java269
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDocShell_1_8.java317
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDownload.java95
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDownload_1_8.java83
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIEmbeddingSiteWindow.java81
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIFactory.java51
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIFile.java227
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIFilePicker.java118
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIFilePicker_1_8.java118
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIHelperAppLauncher.java79
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIHelperAppLauncherDialog.java55
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIHelperAppLauncherDialog_1_9.java57
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIHelperAppLauncher_1_8.java79
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIHelperAppLauncher_1_9.java83
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIIOService.java83
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIInputStream.java63
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIInterfaceRequestor.java47
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIJSContextStack.java59
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsILocalFile.java111
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIMemory.java63
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIObserverService.java59
-rwxr-xr-xbundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIPrefBranch.java123
-rwxr-xr-xbundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIPrefLocalizedString.java59
-rwxr-xr-xbundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIPrefService.java67
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIPrincipal.java143
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIProgressDialog.java63
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIProgressDialog_1_8.java71
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIPromptService.java113
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIPromptService2.java51
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIProperties.java63
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIRequest.java101
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIScriptSecurityManager_1_9.java159
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIScriptSecurityManager_1_9_1.java159
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsISecurityCheckedComponent.java33
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsISerializable.java51
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIServiceManager.java59
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsISimpleEnumerator.java51
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsISupports.java68
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsISupportsWeakReference.java47
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsITooltipListener.java51
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsITransfer.java47
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIURI.java147
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIURIContentListener.java75
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIVariant.java147
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWeakReference.java47
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebBrowser.java71
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebBrowserChrome.java137
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebBrowserChromeFocus.java51
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebBrowserFocus.java75
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebBrowserSetup.java63
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebBrowserStream.java55
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebNavigation.java119
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebNavigationInfo.java55
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebProgress.java79
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebProgressListener.java93
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebProgressListener2.java47
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWindowCreator.java47
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWindowCreator2.java49
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWindowWatcher.java87
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWritableVariant.java141
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIXPCSecurityManager.java79
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/package.html20
117 files changed, 19372 insertions, 0 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/AppFileLocProvider.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/AppFileLocProvider.java
new file mode 100644
index 0000000000..89715657ac
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/AppFileLocProvider.java
@@ -0,0 +1,334 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swt.browser;
+
+import java.util.Vector;
+
+import org.eclipse.swt.internal.*;
+import org.eclipse.swt.internal.mozilla.*;
+
+class AppFileLocProvider {
+ XPCOMObject supports;
+ XPCOMObject directoryServiceProvider;
+ XPCOMObject directoryServiceProvider2;
+ int refCount = 0;
+ String mozillaPath, profilePath, componentsPath;
+ String[] pluginDirs;
+ boolean isXULRunner;
+
+ static final String SEPARATOR_OS = System.getProperty ("file.separator"); //$NON-NLS-1$
+ static final String CHROME_DIR = "chrome"; //$NON-NLS-1$
+ static final String COMPONENTS_DIR = "components"; //$NON-NLS-1$
+ static final String HISTORY_FILE = "history.dat"; //$NON-NLS-1$
+ static final String LOCALSTORE_FILE = "localstore.rdf"; //$NON-NLS-1$
+ static final String MIMETYPES_FILE = "mimeTypes.rdf"; //$NON-NLS-1$
+ static final String PLUGINS_DIR = "plugins"; //$NON-NLS-1$
+ static final String USER_PLUGINS_DIR = ".mozilla" + SEPARATOR_OS + "plugins"; //$NON-NLS-1$ //$NON-NLS-2$
+ static final String PREFERENCES_FILE = "prefs.js"; //$NON-NLS-1$
+
+ static boolean IsSparc;
+ static {
+ String osName = System.getProperty ("os.name").toLowerCase (); //$NON-NLS-1$
+ String osArch = System.getProperty ("os.arch").toLowerCase (); //$NON-NLS-1$
+ IsSparc = (osName.startsWith ("sunos") || osName.startsWith ("solaris")) && osArch.startsWith("sparc"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ }
+
+AppFileLocProvider (String path) {
+ mozillaPath = path + SEPARATOR_OS;
+ createCOMInterfaces ();
+}
+
+int AddRef () {
+ refCount++;
+ return refCount;
+}
+
+void createCOMInterfaces () {
+ /* Create each of the interfaces that this object implements */
+ supports = new XPCOMObject (new int[] {2, 0, 0}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ };
+
+ directoryServiceProvider = new XPCOMObject (new int[] {2, 0, 0, 3}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return getFile (args[0], args[1], args[2]);}
+ };
+
+ directoryServiceProvider2 = new XPCOMObject (new int[] {2, 0, 0, 3, 2}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return getFile (args[0], args[1], args[2]);}
+ public int /*long*/ method4 (int /*long*/[] args) {return getFiles (args[0], args[1]);}
+ };
+}
+
+void disposeCOMInterfaces () {
+ if (supports != null) {
+ supports.dispose ();
+ supports = null;
+ }
+ if (directoryServiceProvider != null) {
+ directoryServiceProvider.dispose ();
+ directoryServiceProvider = null;
+ }
+ if (directoryServiceProvider2 != null) {
+ directoryServiceProvider2.dispose ();
+ directoryServiceProvider2 = null;
+ }
+}
+
+int /*long*/ getAddress () {
+ return directoryServiceProvider.getAddress ();
+}
+
+int QueryInterface (int /*long*/ riid, int /*long*/ ppvObject) {
+ if (riid == 0 || ppvObject == 0) return XPCOM.NS_ERROR_NO_INTERFACE;
+ nsID guid = new nsID ();
+ XPCOM.memmove (guid, riid, nsID.sizeof);
+
+ if (guid.Equals (nsISupports.NS_ISUPPORTS_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {supports.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsIDirectoryServiceProvider.NS_IDIRECTORYSERVICEPROVIDER_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {directoryServiceProvider.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsIDirectoryServiceProvider2.NS_IDIRECTORYSERVICEPROVIDER2_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {directoryServiceProvider2.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+
+ XPCOM.memmove (ppvObject, new int /*long*/[] {0}, C.PTR_SIZEOF);
+ return XPCOM.NS_ERROR_NO_INTERFACE;
+}
+
+int Release () {
+ refCount--;
+ if (refCount == 0) disposeCOMInterfaces ();
+ return refCount;
+}
+
+void setComponentsPath (String path) {
+ componentsPath = path;
+}
+
+void setProfilePath (String path) {
+ profilePath = path;
+ if (!Compatibility.fileExists (path, "")) { //$NON-NLS-1$
+ int /*long*/[] result = new int /*long*/[1];
+ nsEmbedString pathString = new nsEmbedString (path);
+ int rc = XPCOM.NS_NewLocalFile (pathString.getAddress (), 1, result);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (result[0] == 0) Mozilla.error (XPCOM.NS_ERROR_NULL_POINTER);
+ pathString.dispose ();
+
+ nsILocalFile file = new nsILocalFile (result [0]);
+ rc = file.Create (nsILocalFile.DIRECTORY_TYPE, 0700);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ file.Release ();
+ }
+}
+
+/* nsIDirectoryServiceProvider2 */
+
+int getFiles (int /*long*/ prop, int /*long*/ _retval) {
+ int size = XPCOM.strlen (prop);
+ byte[] bytes = new byte[size];
+ XPCOM.memmove (bytes, prop, size);
+ String propertyName = new String (MozillaDelegate.mbcsToWcs (null, bytes));
+ String[] propertyValues = null;
+
+ if (propertyName.equals (XPCOM.NS_APP_PLUGINS_DIR_LIST)) {
+ if (pluginDirs == null) {
+ int index = 0;
+ /* set the first value(s) to the MOZ_PLUGIN_PATH environment variable value if it's defined */
+ int /*long*/ ptr = C.getenv (MozillaDelegate.wcsToMbcs (null, XPCOM.MOZILLA_PLUGIN_PATH, true));
+ if (ptr != 0) {
+ int length = C.strlen (ptr);
+ byte[] buffer = new byte[length];
+ C.memmove (buffer, ptr, length);
+ String value = new String (MozillaDelegate.mbcsToWcs (null, buffer));
+ if (value.length () > 0) {
+ String separator = System.getProperty ("path.separator"); // $NON-NLS-1$
+ Vector segments = new Vector ();
+ int start, end = -1;
+ do {
+ start = end + 1;
+ end = value.indexOf (separator, start);
+ String segment;
+ if (end == -1) {
+ segment = value.substring (start);
+ } else {
+ segment = value.substring (start, end);
+ }
+ if (segment.length () > 0) segments.addElement (segment);
+ } while (end != -1);
+ int segmentsSize = segments.size ();
+ pluginDirs = new String [segmentsSize + (IsSparc ? 1 : 2)];
+ for (index = 0; index < segmentsSize; index++) {
+ pluginDirs[index] = (String)segments.elementAt (index);
+ }
+ }
+ }
+ if (pluginDirs == null) {
+ pluginDirs = new String[IsSparc ? 1 : 2];
+ }
+
+ /* set the next value to the GRE path + "plugins" */
+
+ /*
+ * Bug on Solaris SPARC. Attempting to start the java plug-in fails with an
+ * error indicating that PR_NewMonitor could not be found. This is a well-
+ * known problem that many other apps have also encountered, with no
+ * resolution other than to remove this plug-in. The Browser workaround is
+ * to not add the directory containing this plug-in to the plug-in search path.
+ */
+ if (!IsSparc) {
+ pluginDirs[index++] = mozillaPath + PLUGINS_DIR;
+ }
+
+ /* set the next value to the home directory + "/.mozilla/plugins" */
+ pluginDirs[index++] = System.getProperty("user.home") + SEPARATOR_OS + USER_PLUGINS_DIR;
+ }
+ propertyValues = pluginDirs;
+ }
+
+ XPCOM.memmove(_retval, new int /*long*/[] {0}, C.PTR_SIZEOF);
+ if (propertyValues != null) {
+ int /*long*/[] result = new int /*long*/[1];
+ nsISupports[] files = new nsISupports [propertyValues.length];
+ int index = 0;
+ for (int i = 0; i < propertyValues.length; i++) {
+ nsEmbedString pathString = new nsEmbedString (propertyValues[i]);
+ int rc = XPCOM.NS_NewLocalFile (pathString.getAddress (), 1, result);
+ if (rc != XPCOM.NS_ERROR_FILE_UNRECOGNIZED_PATH) {
+ /* value appears to be a valid pathname */
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (result[0] == 0) Mozilla.error (XPCOM.NS_ERROR_NULL_POINTER);
+
+ nsILocalFile localFile = new nsILocalFile (result[0]);
+ result[0] = 0;
+ rc = localFile.QueryInterface (nsIFile.NS_IFILE_IID, result);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (result[0] == 0) Mozilla.error (XPCOM.NS_ERROR_NO_INTERFACE);
+ localFile.Release ();
+
+ nsIFile file = new nsIFile (result[0]);
+ files[index++] = file;
+ }
+ pathString.dispose ();
+ result[0] = 0;
+ }
+
+ if (index < propertyValues.length) {
+ /* there were some invalid values so remove the trailing empty array slots */
+ nsISupports[] temp = new nsISupports [index];
+ System.arraycopy (files, 0, temp, 0, index);
+ files = temp;
+ }
+
+ SimpleEnumerator enumerator = new SimpleEnumerator (files);
+ enumerator.AddRef ();
+ XPCOM.memmove (_retval, new int /*long*/[] {enumerator.getAddress ()}, C.PTR_SIZEOF);
+ return XPCOM.NS_OK;
+ }
+
+ return XPCOM.NS_ERROR_FAILURE;
+}
+
+/* nsIDirectoryServiceProvider implementation */
+
+int getFile(int /*long*/ prop, int /*long*/ persistent, int /*long*/ _retval) {
+ int size = XPCOM.strlen (prop);
+ byte[] bytes = new byte[size];
+ XPCOM.memmove (bytes, prop, size);
+ String propertyName = new String (MozillaDelegate.mbcsToWcs (null, bytes));
+ String propertyValue = null;
+
+ if (propertyName.equals (XPCOM.NS_APP_HISTORY_50_FILE)) {
+ propertyValue = profilePath + HISTORY_FILE;
+ } else if (propertyName.equals (XPCOM.NS_APP_USER_MIMETYPES_50_FILE)) {
+ propertyValue = profilePath + MIMETYPES_FILE;
+ } else if (propertyName.equals (XPCOM.NS_APP_PREFS_50_FILE)) {
+ propertyValue = profilePath + PREFERENCES_FILE;
+ } else if (propertyName.equals (XPCOM.NS_APP_PREFS_50_DIR)) {
+ propertyValue = profilePath;
+ } else if (propertyName.equals (XPCOM.NS_APP_USER_CHROME_DIR)) {
+ propertyValue = profilePath + CHROME_DIR;
+ } else if (propertyName.equals (XPCOM.NS_APP_USER_PROFILE_50_DIR)) {
+ propertyValue = profilePath;
+ } else if (propertyName.equals (XPCOM.NS_APP_LOCALSTORE_50_FILE)) {
+ propertyValue = profilePath + LOCALSTORE_FILE;
+ } else if (propertyName.equals (XPCOM.NS_APP_CACHE_PARENT_DIR)) {
+ propertyValue = profilePath;
+ } else if (propertyName.equals (XPCOM.NS_OS_HOME_DIR)) {
+ propertyValue = System.getProperty("user.home"); //$NON-NLS-1$
+ } else if (propertyName.equals (XPCOM.NS_OS_TEMP_DIR)) {
+ propertyValue = System.getProperty("java.io.tmpdir"); //$NON-NLS-1$
+ } else if (propertyName.equals (XPCOM.NS_GRE_DIR)) {
+ propertyValue = mozillaPath;
+ } else if (propertyName.equals (XPCOM.NS_GRE_COMPONENT_DIR)) {
+ propertyValue = componentsPath != null ? componentsPath : mozillaPath + COMPONENTS_DIR;
+ } else if (propertyName.equals (XPCOM.NS_XPCOM_INIT_CURRENT_PROCESS_DIR)) {
+ propertyValue = mozillaPath;
+ } else if (propertyName.equals (XPCOM.NS_OS_CURRENT_PROCESS_DIR)) {
+ propertyValue = mozillaPath;
+ } else if (propertyName.equals (XPCOM.NS_XPCOM_COMPONENT_DIR)) {
+ propertyValue = mozillaPath + COMPONENTS_DIR;
+ } else if (propertyName.equals (XPCOM.NS_XPCOM_CURRENT_PROCESS_DIR)) {
+ propertyValue = mozillaPath;
+ } else if (propertyName.equals (XPCOM.NS_APP_PREF_DEFAULTS_50_DIR)) {
+ /*
+ * Answering a value for this property causes problems in Mozilla versions
+ * < 1.7. Unfortunately this property is queried early enough in the
+ * Browser creation process that the Mozilla version being used is not
+ * yet determined. However it is known if XULRunner is being used or not.
+ *
+ * For now answer a value for this property iff XULRunner is the GRE.
+ * If the range of Mozilla versions supported by the Browser is changed
+ * in the future to be >= 1.7 then this value can always be answered.
+ */
+ if (isXULRunner) propertyValue = profilePath;
+ }
+
+ XPCOM.memmove (persistent, new int[] {1}, 4); /* PRBool */
+ XPCOM.memmove (_retval, new int /*long*/[] {0}, C.PTR_SIZEOF);
+ if (propertyValue != null && propertyValue.length () > 0) {
+ int /*long*/[] result = new int /*long*/[1];
+ nsEmbedString pathString = new nsEmbedString (propertyValue);
+ int rc = XPCOM.NS_NewLocalFile (pathString.getAddress (), 1, result);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (result[0] == 0) Mozilla.error (XPCOM.NS_ERROR_NULL_POINTER);
+ pathString.dispose ();
+
+ nsILocalFile localFile = new nsILocalFile (result [0]);
+ result[0] = 0;
+ rc = localFile.QueryInterface (nsIFile.NS_IFILE_IID, result);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (result[0] == 0) Mozilla.error (XPCOM.NS_ERROR_NO_INTERFACE);
+
+ XPCOM.memmove (_retval, new int /*long*/[] {result[0]}, C.PTR_SIZEOF);
+ localFile.Release ();
+ return XPCOM.NS_OK;
+ }
+
+ return XPCOM.NS_ERROR_FAILURE;
+}
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Download.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Download.java
new file mode 100644
index 0000000000..b648b3329f
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Download.java
@@ -0,0 +1,375 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swt.browser;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.internal.*;
+import org.eclipse.swt.internal.mozilla.*;
+import org.eclipse.swt.layout.*;
+import org.eclipse.swt.widgets.*;
+
+/**
+ * This class implements the nsIDownload interface for mozilla
+ * versions 1.4 - 1.7.x. For mozilla version 1.8.x this interface
+ * is implemented by class nsIDownload_1_8. Later versions of
+ * mozilla do not need to call this interface.
+ */
+class Download {
+ XPCOMObject supports;
+ XPCOMObject download;
+ XPCOMObject progressDialog;
+ XPCOMObject webProgressListener;
+ nsIHelperAppLauncher helperAppLauncher;
+ int refCount = 0;
+
+ Shell shell;
+ Label status;
+ Button cancel;
+
+Download () {
+ createCOMInterfaces ();
+}
+
+int AddRef () {
+ refCount++;
+ return refCount;
+}
+
+void createCOMInterfaces () {
+ /* Create each of the interfaces that this object implements */
+ supports = new XPCOMObject (new int[] {2, 0, 0}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ };
+
+ download = new XPCOMObject (new int[] {2, 0, 0, 7, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return Init (args[0], args[1], args[2], args[3], args[4], args[5], args[6]);}
+ public int /*long*/ method4 (int /*long*/[] args) {return GetSource (args[0]);}
+ public int /*long*/ method5 (int /*long*/[] args) {return GetTarget (args[0]);}
+ public int /*long*/ method6 (int /*long*/[] args) {return GetPersist (args[0]);}
+ public int /*long*/ method7 (int /*long*/[] args) {return GetPercentComplete (args[0]);}
+ public int /*long*/ method8 (int /*long*/[] args) {return GetDisplayName (args[0]);}
+ public int /*long*/ method9 (int /*long*/[] args) {return SetDisplayName (args[0]);}
+ public int /*long*/ method10 (int /*long*/[] args) {return GetStartTime (args[0]);}
+ public int /*long*/ method11 (int /*long*/[] args) {return GetMIMEInfo (args[0]);}
+ public int /*long*/ method12 (int /*long*/[] args) {return GetListener (args[0]);}
+ public int /*long*/ method13 (int /*long*/[] args) {return SetListener (args[0]);}
+ public int /*long*/ method14 (int /*long*/[] args) {return GetObserver (args[0]);}
+ public int /*long*/ method15 (int /*long*/[] args) {return SetObserver (args[0]);}
+ };
+
+ progressDialog = new XPCOMObject (new int[] {2, 0, 0, 7, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return Init (args[0], args[1], args[2], args[3], args[4], args[5], args[6]);}
+ public int /*long*/ method4 (int /*long*/[] args) {return GetSource (args[0]);}
+ public int /*long*/ method5 (int /*long*/[] args) {return GetTarget (args[0]);}
+ public int /*long*/ method6 (int /*long*/[] args) {return GetPersist (args[0]);}
+ public int /*long*/ method7 (int /*long*/[] args) {return GetPercentComplete (args[0]);}
+ public int /*long*/ method8 (int /*long*/[] args) {return GetDisplayName (args[0]);}
+ public int /*long*/ method9 (int /*long*/[] args) {return SetDisplayName (args[0]);}
+ public int /*long*/ method10 (int /*long*/[] args) {return GetStartTime (args[0]);}
+ public int /*long*/ method11 (int /*long*/[] args) {return GetMIMEInfo (args[0]);}
+ public int /*long*/ method12 (int /*long*/[] args) {return GetListener (args[0]);}
+ public int /*long*/ method13 (int /*long*/[] args) {return SetListener (args[0]);}
+ public int /*long*/ method14 (int /*long*/[] args) {return GetObserver (args[0]);}
+ public int /*long*/ method15 (int /*long*/[] args) {return SetObserver (args[0]);}
+ public int /*long*/ method16 (int /*long*/[] args) {return Open (args[0]);}
+ public int /*long*/ method17 (int /*long*/[] args) {return GetCancelDownloadOnClose (args[0]);}
+ public int /*long*/ method18 (int /*long*/[] args) {return SetCancelDownloadOnClose ((int)/*64*/args[0]);}
+ public int /*long*/ method19 (int /*long*/[] args) {return GetDialog (args[0]);}
+ public int /*long*/ method20 (int /*long*/[] args) {return SetDialog (args[0]);}
+ };
+
+ webProgressListener = new XPCOMObject (new int[] {2, 0, 0, 4, 6, 3, 4, 3}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return OnStateChange (args[0], args[1], (int)/*64*/args[2], (int)/*64*/args[3]);}
+ public int /*long*/ method4 (int /*long*/[] args) {return OnProgressChange (args[0], args[1], (int)/*64*/args[2], (int)/*64*/args[3], (int)/*64*/args[4], (int)/*64*/args[5]);}
+ public int /*long*/ method5 (int /*long*/[] args) {return OnLocationChange (args[0], args[1], args[2]);}
+ public int /*long*/ method6 (int /*long*/[] args) {return OnStatusChange (args[0], args[1], (int)/*64*/args[2], args[3]);}
+ public int /*long*/ method7 (int /*long*/[] args) {return OnSecurityChange (args[0], args[1], (int)/*64*/args[2]);}
+ };
+}
+
+void disposeCOMInterfaces () {
+ if (supports != null) {
+ supports.dispose ();
+ supports = null;
+ }
+ if (download != null) {
+ download.dispose ();
+ download = null;
+ }
+ if (progressDialog != null) {
+ progressDialog.dispose ();
+ progressDialog = null;
+ }
+ if (webProgressListener != null) {
+ webProgressListener.dispose ();
+ webProgressListener = null;
+ }
+}
+
+int /*long*/ getAddress () {
+ return progressDialog.getAddress ();
+}
+
+int QueryInterface (int /*long*/ riid, int /*long*/ ppvObject) {
+ if (riid == 0 || ppvObject == 0) return XPCOM.NS_ERROR_NO_INTERFACE;
+ nsID guid = new nsID ();
+ XPCOM.memmove (guid, riid, nsID.sizeof);
+
+ if (guid.Equals (nsISupports.NS_ISUPPORTS_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {supports.getAddress ()}, C.PTR_SIZEOF);
+ AddRef();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsIDownload.NS_IDOWNLOAD_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {download.getAddress ()}, C.PTR_SIZEOF);
+ AddRef();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsIProgressDialog.NS_IPROGRESSDIALOG_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {progressDialog.getAddress ()}, C.PTR_SIZEOF);
+ AddRef();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsIWebProgressListener.NS_IWEBPROGRESSLISTENER_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {webProgressListener.getAddress ()}, C.PTR_SIZEOF);
+ AddRef();
+ return XPCOM.NS_OK;
+ }
+ XPCOM.memmove (ppvObject, new int /*long*/[] {0}, C.PTR_SIZEOF);
+ return XPCOM.NS_ERROR_NO_INTERFACE;
+}
+
+int Release () {
+ refCount--;
+ if (refCount == 0) disposeCOMInterfaces ();
+ return refCount;
+}
+
+/* nsIDownload */
+
+/* Note. The argument startTime is defined as a PRInt64. This translates into two java ints. */
+int Init (int /*long*/ aSource, int /*long*/ aTarget, int /*long*/ aDisplayName, int /*long*/ aMIMEInfo, int /*long*/ startTime1, int /*long*/ startTime2, int /*long*/ aPersist) {
+ nsIURI source = new nsIURI (aSource);
+ int /*long*/ aSpec = XPCOM.nsEmbedCString_new ();
+ int rc = source.GetHost (aSpec);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ int length = XPCOM.nsEmbedCString_Length (aSpec);
+ int /*long*/ buffer = XPCOM.nsEmbedCString_get (aSpec);
+ byte[] dest = new byte[length];
+ XPCOM.memmove (dest, buffer, length);
+ XPCOM.nsEmbedCString_delete (aSpec);
+ String url = new String (dest);
+
+ /*
+ * As of mozilla 1.7 the second argument of the nsIDownload interface's
+ * Init function changed from nsILocalFile to nsIURI. Detect which of
+ * these interfaces the second argument implements and act accordingly.
+ */
+ String filename = null;
+ nsISupports supports = new nsISupports (aTarget);
+ int /*long*/[] result = new int /*long*/[1];
+ rc = supports.QueryInterface (nsIURI.NS_IURI_IID, result);
+ if (rc == XPCOM.NS_OK) { /* >= 1.7 */
+ nsIURI target = new nsIURI (result[0]);
+ result[0] = 0;
+ int /*long*/ aPath = XPCOM.nsEmbedCString_new ();
+ rc = target.GetPath (aPath);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ length = XPCOM.nsEmbedCString_Length (aPath);
+ buffer = XPCOM.nsEmbedCString_get (aPath);
+ dest = new byte[length];
+ XPCOM.memmove (dest, buffer, length);
+ XPCOM.nsEmbedCString_delete (aPath);
+ filename = new String (dest);
+ int separator = filename.lastIndexOf (System.getProperty ("file.separator")); //$NON-NLS-1$
+ filename = filename.substring (separator + 1);
+ target.Release ();
+ } else { /* < 1.7 */
+ nsILocalFile target = new nsILocalFile (aTarget);
+ int /*long*/ aNativeTarget = XPCOM.nsEmbedCString_new ();
+ rc = target.GetNativeLeafName (aNativeTarget);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ length = XPCOM.nsEmbedCString_Length (aNativeTarget);
+ buffer = XPCOM.nsEmbedCString_get (aNativeTarget);
+ dest = new byte[length];
+ XPCOM.memmove (dest, buffer, length);
+ XPCOM.nsEmbedCString_delete (aNativeTarget);
+ filename = new String (dest);
+ }
+
+ Listener listener = new Listener () {
+ public void handleEvent (Event event) {
+ if (event.widget == cancel) {
+ shell.close ();
+ }
+ if (helperAppLauncher != null) {
+ helperAppLauncher.Cancel ();
+ helperAppLauncher.Release ();
+ }
+ shell = null;
+ helperAppLauncher = null;
+ }
+ };
+ shell = new Shell (SWT.DIALOG_TRIM);
+ String msg = Compatibility.getMessage ("SWT_Download_File", new Object[] {filename}); //$NON-NLS-1$
+ shell.setText (msg);
+ GridLayout gridLayout = new GridLayout ();
+ gridLayout.marginHeight = 15;
+ gridLayout.marginWidth = 15;
+ gridLayout.verticalSpacing = 20;
+ shell.setLayout(gridLayout);
+ msg = Compatibility.getMessage ("SWT_Download_Location", new Object[] {filename, url}); //$NON-NLS-1$
+ new Label (shell, SWT.SIMPLE).setText (msg);
+ status = new Label (shell, SWT.SIMPLE);
+ msg = Compatibility.getMessage ("SWT_Download_Started"); //$NON-NLS-1$
+ status.setText (msg);
+ GridData data = new GridData ();
+ data.grabExcessHorizontalSpace = true;
+ data.grabExcessVerticalSpace = true;
+ status.setLayoutData (data);
+
+ cancel = new Button (shell, SWT.PUSH);
+ cancel.setText (SWT.getMessage ("SWT_Cancel")); //$NON-NLS-1$
+ data = new GridData ();
+ data.horizontalAlignment = GridData.CENTER;
+ cancel.setLayoutData (data);
+ cancel.addListener (SWT.Selection, listener);
+ shell.addListener (SWT.Close, listener);
+ shell.pack ();
+ shell.open ();
+ return XPCOM.NS_OK;
+}
+
+int GetSource (int /*long*/ aSource) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int GetTarget (int /*long*/ aTarget) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int GetPersist (int /*long*/ aPersist) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int GetPercentComplete (int /*long*/ aPercentComplete) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int GetDisplayName (int /*long*/ aDisplayName) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int SetDisplayName (int /*long*/ aDisplayName) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int GetStartTime (int /*long*/ aStartTime) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int GetMIMEInfo (int /*long*/ aMIMEInfo) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int GetListener (int /*long*/ aListener) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int SetListener (int /*long*/ aListener) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int GetObserver (int /*long*/ aObserver) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int SetObserver (int /*long*/ aObserver) {
+ if (aObserver != 0) {
+ nsISupports supports = new nsISupports (aObserver);
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = supports.QueryInterface (nsIHelperAppLauncher.NS_IHELPERAPPLAUNCHER_IID, result);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (result[0] == 0) Mozilla.error (XPCOM.NS_ERROR_NO_INTERFACE);
+ helperAppLauncher = new nsIHelperAppLauncher (result[0]);
+ }
+ return XPCOM.NS_OK;
+}
+
+/* nsIProgressDialog */
+int Open (int /*long*/ aParent) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int GetCancelDownloadOnClose (int /*long*/ aCancelDownloadOnClose) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int SetCancelDownloadOnClose (int aCancelDownloadOnClose) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int GetDialog (int /*long*/ aDialog) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int SetDialog (int /*long*/ aDialog) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+/* nsIWebProgressListener */
+
+int OnStateChange (int /*long*/ aWebProgress, int /*long*/ aRequest, int aStateFlags, int aStatus) {
+ if ((aStateFlags & nsIWebProgressListener.STATE_STOP) != 0) {
+ if (helperAppLauncher != null) helperAppLauncher.Release ();
+ helperAppLauncher = null;
+ if (shell != null && !shell.isDisposed ()) shell.dispose ();
+ shell = null;
+ }
+ return XPCOM.NS_OK;
+}
+
+int OnProgressChange (int /*long*/ aWebProgress, int /*long*/ aRequest, int aCurSelfProgress, int aMaxSelfProgress, int aCurTotalProgress, int aMaxTotalProgress) {
+ int currentKBytes = aCurTotalProgress / 1024;
+ int totalKBytes = aMaxTotalProgress / 1024;
+ if (shell != null && !shell.isDisposed ()) {
+ Object[] arguments = {new Integer (currentKBytes), new Integer (totalKBytes)};
+ String statusMsg = Compatibility.getMessage ("SWT_Download_Status", arguments); //$NON-NLS-1$
+ status.setText (statusMsg);
+ shell.layout (true);
+ shell.getDisplay ().update ();
+ }
+ return XPCOM.NS_OK;
+}
+
+int OnLocationChange (int /*long*/ aWebProgress, int /*long*/ aRequest, int /*long*/ aLocation) {
+ return XPCOM.NS_OK;
+}
+
+int OnStatusChange (int /*long*/ aWebProgress, int /*long*/ aRequest, int aStatus, int /*long*/ aMessage) {
+ return XPCOM.NS_OK;
+}
+
+int OnSecurityChange (int /*long*/ aWebProgress, int /*long*/ aRequest, int state) {
+ return XPCOM.NS_OK;
+}
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/DownloadFactory.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/DownloadFactory.java
new file mode 100644
index 0000000000..901786c1d3
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/DownloadFactory.java
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swt.browser;
+
+import org.eclipse.swt.internal.C;
+import org.eclipse.swt.internal.mozilla.*;
+
+class DownloadFactory {
+ XPCOMObject supports;
+ XPCOMObject factory;
+ int refCount = 0;
+
+DownloadFactory () {
+ createCOMInterfaces ();
+}
+
+int AddRef () {
+ refCount++;
+ return refCount;
+}
+
+void createCOMInterfaces () {
+ /* Create each of the interfaces that this object implements */
+ supports = new XPCOMObject (new int[] {2, 0, 0}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ };
+
+ factory = new XPCOMObject (new int[] {2, 0, 0, 3, 1}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return CreateInstance (args[0], args[1], args[2]);}
+ public int /*long*/ method4 (int /*long*/[] args) {return LockFactory ((int)/*64*/args[0]);}
+ };
+}
+
+void disposeCOMInterfaces () {
+ if (supports != null) {
+ supports.dispose ();
+ supports = null;
+ }
+ if (factory != null) {
+ factory.dispose ();
+ factory = null;
+ }
+}
+
+int /*long*/ getAddress () {
+ return factory.getAddress ();
+}
+
+int QueryInterface (int /*long*/ riid, int /*long*/ ppvObject) {
+ if (riid == 0 || ppvObject == 0) return XPCOM.NS_ERROR_NO_INTERFACE;
+ nsID guid = new nsID ();
+ XPCOM.memmove (guid, riid, nsID.sizeof);
+
+ if (guid.Equals (nsISupports.NS_ISUPPORTS_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {supports.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsIFactory.NS_IFACTORY_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {factory.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+
+ XPCOM.memmove (ppvObject, new int /*long*/[] {0}, C.PTR_SIZEOF);
+ return XPCOM.NS_ERROR_NO_INTERFACE;
+}
+
+int Release () {
+ refCount--;
+ if (refCount == 0) disposeCOMInterfaces ();
+ return refCount;
+}
+
+/* nsIFactory */
+
+int CreateInstance (int /*long*/ aOuter, int /*long*/ iid, int /*long*/ result) {
+ Download download = new Download ();
+ download.AddRef ();
+ XPCOM.memmove (result, new int /*long*/[] {download.getAddress ()}, C.PTR_SIZEOF);
+ return XPCOM.NS_OK;
+}
+
+int LockFactory (int lock) {
+ return XPCOM.NS_OK;
+}
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/DownloadFactory_1_8.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/DownloadFactory_1_8.java
new file mode 100644
index 0000000000..1af00696d7
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/DownloadFactory_1_8.java
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swt.browser;
+
+import org.eclipse.swt.internal.C;
+import org.eclipse.swt.internal.mozilla.*;
+
+class DownloadFactory_1_8 {
+ XPCOMObject supports;
+ XPCOMObject factory;
+ int refCount = 0;
+
+DownloadFactory_1_8 () {
+ createCOMInterfaces ();
+}
+
+int AddRef () {
+ refCount++;
+ return refCount;
+}
+
+void createCOMInterfaces () {
+ /* Create each of the interfaces that this object implements */
+ supports = new XPCOMObject (new int[] {2, 0, 0}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ };
+
+ factory = new XPCOMObject (new int[] {2, 0, 0, 3, 1}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return CreateInstance (args[0], args[1], args[2]);}
+ public int /*long*/ method4 (int /*long*/[] args) {return LockFactory ((int)/*64*/args[0]);}
+ };
+}
+
+void disposeCOMInterfaces () {
+ if (supports != null) {
+ supports.dispose ();
+ supports = null;
+ }
+ if (factory != null) {
+ factory.dispose ();
+ factory = null;
+ }
+}
+
+int /*long*/ getAddress () {
+ return factory.getAddress ();
+}
+
+int QueryInterface (int /*long*/ riid, int /*long*/ ppvObject) {
+ if (riid == 0 || ppvObject == 0) return XPCOM.NS_ERROR_NO_INTERFACE;
+ nsID guid = new nsID ();
+ XPCOM.memmove (guid, riid, nsID.sizeof);
+
+ if (guid.Equals (nsISupports.NS_ISUPPORTS_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {supports.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsIFactory.NS_IFACTORY_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {factory.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+
+ XPCOM.memmove (ppvObject, new int /*long*/[] {0}, C.PTR_SIZEOF);
+ return XPCOM.NS_ERROR_NO_INTERFACE;
+}
+
+int Release () {
+ refCount--;
+ if (refCount == 0) disposeCOMInterfaces ();
+ return refCount;
+}
+
+/* nsIFactory */
+
+int CreateInstance (int /*long*/ aOuter, int /*long*/ iid, int /*long*/ result) {
+ Download_1_8 download = new Download_1_8 ();
+ download.AddRef ();
+ XPCOM.memmove (result, new int /*long*/[] {download.getAddress ()}, C.PTR_SIZEOF);
+ return XPCOM.NS_OK;
+}
+
+int LockFactory (int lock) {
+ return XPCOM.NS_OK;
+}
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Download_1_8.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Download_1_8.java
new file mode 100644
index 0000000000..82819f1095
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Download_1_8.java
@@ -0,0 +1,397 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swt.browser;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.internal.*;
+import org.eclipse.swt.internal.mozilla.*;
+import org.eclipse.swt.layout.*;
+import org.eclipse.swt.widgets.*;
+
+/**
+ * This class implements the nsIDownload interface for mozilla
+ * version 1.8.x. For mozilla versions 1.4 - 1.7.x this interface
+ * is implemented by class nsIDownload. Mozilla versions later
+ * than 1.8.x do not need to call this interface.
+ */
+class Download_1_8 {
+ XPCOMObject supports;
+ XPCOMObject download;
+ XPCOMObject progressDialog;
+ XPCOMObject webProgressListener;
+ nsICancelable cancelable;
+ int refCount = 0;
+
+ Shell shell;
+ Label status;
+ Button cancel;
+
+ static final boolean is32 = C.PTR_SIZEOF == 4;
+
+Download_1_8 () {
+ createCOMInterfaces ();
+}
+
+int AddRef () {
+ refCount++;
+ return refCount;
+}
+
+void createCOMInterfaces () {
+ /* Create each of the interfaces that this object implements */
+ supports = new XPCOMObject (new int[] {2, 0, 0}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ };
+
+ download = new XPCOMObject (new int[] {2, 0, 0, 4, 6, 3, 4, 3, is32 ? 10 : 6, is32 ? 8 : 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return OnStateChange (args[0], args[1], (int)/*64*/args[2], (int)/*64*/args[3]);}
+ public int /*long*/ method4 (int /*long*/[] args) {return OnProgressChange (args[0], args[1], (int)/*64*/args[2], (int)/*64*/args[3], (int)/*64*/args[4], (int)/*64*/args[5]);}
+ public int /*long*/ method5 (int /*long*/[] args) {return OnLocationChange (args[0], args[1], args[2]);}
+ public int /*long*/ method6 (int /*long*/[] args) {return OnStatusChange (args[0], args[1], (int)/*64*/args[2], args[3]);}
+ public int /*long*/ method7 (int /*long*/[] args) {return OnSecurityChange (args[0], args[1], (int)/*64*/args[2]);}
+ public int /*long*/ method8 (int /*long*/[] args) {
+ if (args.length == 10) {
+ return OnProgressChange64_32 (args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8], args[9]);
+ } else {
+ return OnProgressChange64 (args[0], args[1], args[2], args[3], args[4], args[5]);
+ }
+ }
+ public int /*long*/ method9 (int /*long*/[] args) {
+ if (args.length == 8) {
+ return Init_32 (args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7]);
+ } else {
+ return Init (args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
+ }
+ }
+ public int /*long*/ method10 (int /*long*/[] args) {return GetTargetFile (args[0]);}
+ public int /*long*/ method11 (int /*long*/[] args) {return GetPercentComplete (args[0]);}
+ public int /*long*/ method12 (int /*long*/[] args) {return GetAmountTransferred (args[0]);}
+ public int /*long*/ method13 (int /*long*/[] args) {return GetSize (args[0]);}
+ public int /*long*/ method14 (int /*long*/[] args) {return GetSource (args[0]);}
+ public int /*long*/ method15 (int /*long*/[] args) {return GetTarget (args[0]);}
+ public int /*long*/ method16 (int /*long*/[] args) {return GetCancelable (args[0]);}
+ public int /*long*/ method17 (int /*long*/[] args) {return GetDisplayName (args[0]);}
+ public int /*long*/ method18 (int /*long*/[] args) {return GetStartTime (args[0]);}
+ public int /*long*/ method19 (int /*long*/[] args) {return GetMIMEInfo (args[0]);}
+ };
+
+ progressDialog = new XPCOMObject (new int[] {2, 0, 0, 4, 6, 3, 4, 3, is32 ? 10 : 6, is32 ? 8 : 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return OnStateChange (args[0], args[1], (int)/*64*/args[2], (int)/*64*/args[3]);}
+ public int /*long*/ method4 (int /*long*/[] args) {return OnProgressChange (args[0], args[1], (int)/*64*/args[2], (int)/*64*/args[3], (int)/*64*/args[4], (int)/*64*/args[5]);}
+ public int /*long*/ method5 (int /*long*/[] args) {return OnLocationChange (args[0], args[1], args[2]);}
+ public int /*long*/ method6 (int /*long*/[] args) {return OnStatusChange (args[0], args[1], (int)/*64*/args[2], args[3]);}
+ public int /*long*/ method7 (int /*long*/[] args) {return OnSecurityChange (args[0], args[1], (int)/*64*/args[2]);}
+ public int /*long*/ method8 (int /*long*/[] args) {
+ if (args.length == 10) {
+ return OnProgressChange64_32 (args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8], args[9]);
+ } else {
+ return OnProgressChange64 (args[0], args[1], args[2], args[3], args[4], args[5]);
+ }
+ }
+ public int /*long*/ method9 (int /*long*/[] args) {
+ if (args.length == 8) {
+ return Init_32 (args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7]);
+ } else {
+ return Init (args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
+ }
+ }
+ public int /*long*/ method10 (int /*long*/[] args) {return GetTargetFile (args[0]);}
+ public int /*long*/ method11 (int /*long*/[] args) {return GetPercentComplete (args[0]);}
+ public int /*long*/ method12 (int /*long*/[] args) {return GetAmountTransferred (args[0]);}
+ public int /*long*/ method13 (int /*long*/[] args) {return GetSize (args[0]);}
+ public int /*long*/ method14 (int /*long*/[] args) {return GetSource (args[0]);}
+ public int /*long*/ method15 (int /*long*/[] args) {return GetTarget (args[0]);}
+ public int /*long*/ method16 (int /*long*/[] args) {return GetCancelable (args[0]);}
+ public int /*long*/ method17 (int /*long*/[] args) {return GetDisplayName (args[0]);}
+ public int /*long*/ method18 (int /*long*/[] args) {return GetStartTime (args[0]);}
+ public int /*long*/ method19 (int /*long*/[] args) {return GetMIMEInfo (args[0]);}
+ public int /*long*/ method20 (int /*long*/[] args) {return Open (args[0]);}
+ public int /*long*/ method21 (int /*long*/[] args) {return GetCancelDownloadOnClose (args[0]);}
+ public int /*long*/ method22 (int /*long*/[] args) {return SetCancelDownloadOnClose ((int)/*64*/args[0]);}
+ public int /*long*/ method23 (int /*long*/[] args) {return GetObserver (args[0]);}
+ public int /*long*/ method24 (int /*long*/[] args) {return SetObserver (args[0]);}
+ public int /*long*/ method25 (int /*long*/[] args) {return GetDialog (args[0]);}
+ public int /*long*/ method26 (int /*long*/[] args) {return SetDialog (args[0]);}
+ };
+
+ webProgressListener = new XPCOMObject (new int[] {2, 0, 0, 4, 6, 3, 4, 3}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return OnStateChange (args[0], args[1], (int)/*64*/args[2], (int)/*64*/args[3]);}
+ public int /*long*/ method4 (int /*long*/[] args) {return OnProgressChange (args[0], args[1], (int)/*64*/args[2], (int)/*64*/args[3], (int)/*64*/args[4], (int)/*64*/args[5]);}
+ public int /*long*/ method5 (int /*long*/[] args) {return OnLocationChange (args[0], args[1], args[2]);}
+ public int /*long*/ method6 (int /*long*/[] args) {return OnStatusChange (args[0], args[1], (int)/*64*/args[2], args[3]);}
+ public int /*long*/ method7 (int /*long*/[] args) {return OnSecurityChange (args[0], args[1], (int)/*64*/args[2]);}
+ };
+}
+
+void disposeCOMInterfaces() {
+ if (supports != null) {
+ supports.dispose ();
+ supports = null;
+ }
+ if (download != null) {
+ download.dispose ();
+ download = null;
+ }
+ if (progressDialog != null) {
+ progressDialog.dispose ();
+ progressDialog = null;
+ }
+ if (webProgressListener != null) {
+ webProgressListener.dispose ();
+ webProgressListener = null;
+ }
+}
+
+int /*long*/ getAddress () {
+ return progressDialog.getAddress ();
+}
+
+int QueryInterface (int /*long*/ riid, int /*long*/ ppvObject) {
+ if (riid == 0 || ppvObject == 0) return XPCOM.NS_ERROR_NO_INTERFACE;
+ nsID guid = new nsID ();
+ XPCOM.memmove (guid, riid, nsID.sizeof);
+
+ if (guid.Equals (nsISupports.NS_ISUPPORTS_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {supports.getAddress ()}, C.PTR_SIZEOF);
+ AddRef();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsIDownload_1_8.NS_IDOWNLOAD_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {download.getAddress ()}, C.PTR_SIZEOF);
+ AddRef();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsIProgressDialog_1_8.NS_IPROGRESSDIALOG_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {progressDialog.getAddress ()}, C.PTR_SIZEOF);
+ AddRef();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsIWebProgressListener.NS_IWEBPROGRESSLISTENER_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {webProgressListener.getAddress ()}, C.PTR_SIZEOF);
+ AddRef();
+ return XPCOM.NS_OK;
+ }
+ XPCOM.memmove (ppvObject, new int /*long*/[] {0}, C.PTR_SIZEOF);
+ return XPCOM.NS_ERROR_NO_INTERFACE;
+}
+
+int Release () {
+ refCount--;
+ if (refCount == 0) disposeCOMInterfaces ();
+ return refCount;
+}
+
+/* nsIDownload */
+
+/* Note. The argument startTime is defined as a PRInt64. This translates into two java ints. */
+int Init_32 (int /*long*/ aSource, int /*long*/ aTarget, int /*long*/ aDisplayName, int /*long*/ aMIMEInfo, int /*long*/ startTime1, int /*long*/ startTime2, int /*long*/ aTempFile, int /*long*/ aCancelable) {
+ long startTime = (startTime2 << 32) + startTime1;
+ return Init (aSource, aTarget, aDisplayName, aMIMEInfo, startTime, aTempFile, aCancelable);
+}
+
+int Init (int /*long*/ aSource, int /*long*/ aTarget, int /*long*/ aDisplayName, int /*long*/ aMIMEInfo, long startTime, int /*long*/ aTempFile, int /*long*/ aCancelable) {
+ cancelable = new nsICancelable (aCancelable);
+ nsIURI source = new nsIURI (aSource);
+ int /*long*/ aSpec = XPCOM.nsEmbedCString_new ();
+ int rc = source.GetHost (aSpec);
+ if (rc != XPCOM.NS_OK) Mozilla.error(rc);
+ int length = XPCOM.nsEmbedCString_Length (aSpec);
+ int /*long*/ buffer = XPCOM.nsEmbedCString_get (aSpec);
+ byte[] dest = new byte[length];
+ XPCOM.memmove (dest, buffer, length);
+ XPCOM.nsEmbedCString_delete (aSpec);
+ String url = new String (dest);
+
+ nsIURI target = new nsIURI (aTarget);
+ int /*long*/ aPath = XPCOM.nsEmbedCString_new ();
+ rc = target.GetPath (aPath);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ length = XPCOM.nsEmbedCString_Length (aPath);
+ buffer = XPCOM.nsEmbedCString_get (aPath);
+ dest = new byte[length];
+ XPCOM.memmove (dest, buffer, length);
+ XPCOM.nsEmbedCString_delete (aPath);
+ String filename = new String (dest);
+ int separator = filename.lastIndexOf (System.getProperty ("file.separator")); //$NON-NLS-1$
+ filename = filename.substring (separator + 1);
+
+ Listener listener = new Listener() {
+ public void handleEvent (Event event) {
+ if (event.widget == cancel) {
+ shell.close ();
+ }
+ if (cancelable != null) {
+ int rc = cancelable.Cancel (XPCOM.NS_BINDING_ABORTED);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ }
+ shell = null;
+ cancelable = null;
+ }
+ };
+ shell = new Shell (SWT.DIALOG_TRIM);
+ String msg = Compatibility.getMessage ("SWT_Download_File", new Object[] {filename}); //$NON-NLS-1$
+ shell.setText (msg);
+ GridLayout gridLayout = new GridLayout ();
+ gridLayout.marginHeight = 15;
+ gridLayout.marginWidth = 15;
+ gridLayout.verticalSpacing = 20;
+ shell.setLayout (gridLayout);
+ msg = Compatibility.getMessage ("SWT_Download_Location", new Object[] {filename, url}); //$NON-NLS-1$
+ new Label (shell, SWT.SIMPLE).setText (msg);
+ status = new Label (shell, SWT.SIMPLE);
+ msg = Compatibility.getMessage ("SWT_Download_Started"); //$NON-NLS-1$
+ status.setText (msg);
+ GridData data = new GridData ();
+ data.grabExcessHorizontalSpace = true;
+ data.grabExcessVerticalSpace = true;
+ status.setLayoutData (data);
+
+ cancel = new Button (shell, SWT.PUSH);
+ cancel.setText (SWT.getMessage ("SWT_Cancel")); //$NON-NLS-1$
+ data = new GridData ();
+ data.horizontalAlignment = GridData.CENTER;
+ cancel.setLayoutData (data);
+ cancel.addListener (SWT.Selection, listener);
+ shell.addListener (SWT.Close, listener);
+ shell.pack ();
+ shell.open ();
+ return XPCOM.NS_OK;
+}
+
+int GetAmountTransferred (int /*long*/ arg0) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int GetCancelable (int /*long*/ arg0) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int GetDisplayName (int /*long*/ aDisplayName) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int GetMIMEInfo (int /*long*/ aMIMEInfo) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int GetPercentComplete (int /*long*/ aPercentComplete) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int GetSize (int /*long*/ arg0) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int GetSource (int /*long*/ aSource) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int GetStartTime (int /*long*/ aStartTime) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int GetTarget (int /*long*/ aTarget) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int GetTargetFile (int /*long*/ arg0) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+/* nsIProgressDialog */
+int GetCancelDownloadOnClose (int /*long*/ aCancelDownloadOnClose) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int GetDialog (int /*long*/ aDialog) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int GetObserver (int /*long*/ aObserver) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int Open (int /*long*/ aParent) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int SetCancelDownloadOnClose (int aCancelDownloadOnClose) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int SetDialog (int /*long*/ aDialog) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int SetObserver (int /*long*/ aObserver) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+/* nsIWebProgressListener */
+
+int OnLocationChange (int /*long*/ aWebProgress, int /*long*/ aRequest, int /*long*/ aLocation) {
+ return XPCOM.NS_OK;
+}
+
+int OnProgressChange (int /*long*/ aWebProgress, int /*long*/ aRequest, int aCurSelfProgress, int aMaxSelfProgress, int aCurTotalProgress, int aMaxTotalProgress) {
+ return OnProgressChange64 (aWebProgress, aRequest, aCurSelfProgress, aMaxSelfProgress, aCurTotalProgress, aMaxTotalProgress);
+}
+
+/* Note. The last 4 args in the original interface are defined as PRInt64. These each translate into two java ints. */
+int OnProgressChange64_32 (int /*long*/ aWebProgress, int /*long*/ aRequest, int /*long*/ aCurSelfProgress1, int /*long*/ aCurSelfProgress2, int /*long*/ aMaxSelfProgress1, int /*long*/ aMaxSelfProgress2, int /*long*/ aCurTotalProgress1, int /*long*/ aCurTotalProgress2, int /*long*/ aMaxTotalProgress1, int /*long*/ aMaxTotalProgress2) {
+ long aCurSelfProgress = (aCurSelfProgress2 << 32) + aCurSelfProgress1;
+ long aMaxSelfProgress = (aMaxSelfProgress2 << 32) + aMaxSelfProgress1;
+ long aCurTotalProgress = (aCurTotalProgress2 << 32) + aCurTotalProgress1;
+ long aMaxTotalProgress = (aMaxTotalProgress2 << 32) + aMaxTotalProgress1;
+ return OnProgressChange64 (aWebProgress, aRequest, aCurSelfProgress, aMaxSelfProgress, aCurTotalProgress, aMaxTotalProgress);
+}
+
+int OnProgressChange64 (int /*long*/ aWebProgress, int /*long*/ aRequest, long aCurSelfProgress, long aMaxSelfProgress, long aCurTotalProgress, long aMaxTotalProgress) {
+ long currentKBytes = aCurTotalProgress / 1024;
+ long totalKBytes = aMaxTotalProgress / 1024;
+ if (shell != null && !shell.isDisposed ()) {
+ Object[] arguments = {new Long (currentKBytes), new Long (totalKBytes)};
+ String statusMsg = Compatibility.getMessage ("SWT_Download_Status", arguments); //$NON-NLS-1$
+ status.setText (statusMsg);
+ shell.layout (true);
+ shell.getDisplay ().update ();
+ }
+ return XPCOM.NS_OK;
+}
+
+int OnSecurityChange (int /*long*/ aWebProgress, int /*long*/ aRequest, int state) {
+ return XPCOM.NS_OK;
+}
+
+int OnStateChange (int /*long*/ aWebProgress, int /*long*/ aRequest, int aStateFlags, int aStatus) {
+ if ((aStateFlags & nsIWebProgressListener.STATE_STOP) != 0) {
+ cancelable = null;
+ if (shell != null && !shell.isDisposed ()) shell.dispose ();
+ shell = null;
+ }
+ return XPCOM.NS_OK;
+}
+
+int OnStatusChange (int /*long*/ aWebProgress, int /*long*/ aRequest, int aStatus, int /*long*/ aMessage) {
+ return XPCOM.NS_OK;
+}
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/External.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/External.java
new file mode 100644
index 0000000000..53ed58f3b7
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/External.java
@@ -0,0 +1,590 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swt.browser;
+
+import org.eclipse.swt.*;
+import org.eclipse.swt.internal.*;
+import org.eclipse.swt.internal.mozilla.*;
+
+class External {
+ public static final String EXTERNAL_IID_STR =
+ "ded01d20-ba6f-11dd-ad8b-0800200c9a66"; //$NON-NLS-1$
+
+ public static final nsID EXTERNAL_IID =
+ new nsID(EXTERNAL_IID_STR);
+
+ XPCOMObject supports;
+ XPCOMObject external;
+ XPCOMObject classInfo;
+ XPCOMObject securityCheckedComponent;
+ int refCount = 0;
+
+External () {
+ createCOMInterfaces ();
+}
+
+int AddRef () {
+ refCount++;
+ return refCount;
+}
+
+void createCOMInterfaces () {
+ /* Create each of the interfaces that this object implements */
+ supports = new XPCOMObject (new int[] {2, 0, 0}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ };
+
+ classInfo = new XPCOMObject (new int[] {2, 0, 0, 2, 2, 1, 1, 1, 1, 1, 1}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return getInterfaces (args[0], args[1]);}
+ public int /*long*/ method4 (int /*long*/[] args) {return getHelperForLanguage ((int)/*64*/args[0], args[1]);}
+ public int /*long*/ method5 (int /*long*/[] args) {return getContractID (args[0]);}
+ public int /*long*/ method6 (int /*long*/[] args) {return getClassDescription (args[0]);}
+ public int /*long*/ method7 (int /*long*/[] args) {return getClassID (args[0]);}
+ public int /*long*/ method8 (int /*long*/[] args) {return getImplementationLanguage (args[0]);}
+ public int /*long*/ method9 (int /*long*/[] args) {return getFlags (args[0]);}
+ public int /*long*/ method10 (int /*long*/[] args) {return getClassIDNoAlloc (args[0]);}
+ };
+
+ securityCheckedComponent = new XPCOMObject (new int[] {2, 0, 0, 2, 3, 3, 3}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return canCreateWrapper (args[0], args[1]);}
+ public int /*long*/ method4 (int /*long*/[] args) {return canCallMethod (args[0], args[1], args[2]);}
+ public int /*long*/ method5 (int /*long*/[] args) {return canGetProperty (args[0], args[1], args[2]);}
+ public int /*long*/ method6 (int /*long*/[] args) {return canSetProperty (args[0], args[1], args[2]);}
+ };
+
+ external = new XPCOMObject (new int[] {2, 0, 0, 3}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return callJava ((int)/*64*/args[0], args[1], args[2]);}
+ };
+
+}
+
+void disposeCOMInterfaces () {
+ if (supports != null) {
+ supports.dispose ();
+ supports = null;
+ }
+ if (external != null) {
+ external.dispose ();
+ external = null;
+ }
+}
+
+int /*long*/ getAddress () {
+ return external.getAddress ();
+}
+
+int QueryInterface (int /*long*/ riid, int /*long*/ ppvObject) {
+ if (riid == 0 || ppvObject == 0) return XPCOM.NS_ERROR_NO_INTERFACE;
+ nsID guid = new nsID ();
+ XPCOM.memmove (guid, riid, nsID.sizeof);
+
+ if (guid.Equals (nsISupports.NS_ISUPPORTS_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {supports.getAddress ()}, C.PTR_SIZEOF);
+ AddRef();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsIClassInfo.NS_ICLASSINFO_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {classInfo.getAddress ()}, C.PTR_SIZEOF);
+ AddRef();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsISecurityCheckedComponent.NS_ISECURITYCHECKEDCOMPONENT_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {securityCheckedComponent.getAddress ()}, C.PTR_SIZEOF);
+ AddRef();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (EXTERNAL_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {external.getAddress ()}, C.PTR_SIZEOF);
+ AddRef();
+ return XPCOM.NS_OK;
+ }
+
+ XPCOM.memmove (ppvObject, new int /*long*/[] {0}, C.PTR_SIZEOF);
+ return XPCOM.NS_ERROR_NO_INTERFACE;
+}
+
+int Release () {
+ refCount--;
+ if (refCount == 0) disposeCOMInterfaces ();
+ return refCount;
+}
+
+/* nsIClassInfo */
+
+int getClassDescription (int /*long*/ _retValue) {
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = XPCOM.NS_GetServiceManager (result);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (result[0] == 0) Mozilla.error (XPCOM.NS_NOINTERFACE);
+
+ nsIServiceManager serviceManager = new nsIServiceManager (result[0]);
+ result[0] = 0;
+ byte[] aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_MEMORY_CONTRACTID, true);
+ rc = serviceManager.GetServiceByContractID (aContractID, nsIMemory.NS_IMEMORY_IID, result);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (result[0] == 0) Mozilla.error (XPCOM.NS_NOINTERFACE);
+ serviceManager.Release ();
+
+ nsIMemory memory = new nsIMemory (result[0]);
+ result[0] = 0;
+ byte[] bytes = MozillaDelegate.wcsToMbcs (null, "external", true); //$NON-NLS-1$
+ int /*long*/ ptr = memory.Alloc (bytes.length);
+ C.memmove (ptr, bytes, bytes.length);
+ C.memmove (_retValue, new int /*long*/[] {ptr}, C.PTR_SIZEOF);
+ memory.Release ();
+
+ return XPCOM.NS_OK;
+}
+
+int getClassID (int /*long*/ _retValue) {
+ return XPCOM.NS_OK;
+}
+
+int getClassIDNoAlloc (int /*long*/ _retValue) {
+ return XPCOM.NS_OK;
+}
+
+int getContractID (int /*long*/ _retValue) {
+ return XPCOM.NS_OK;
+}
+
+int getFlags (int /*long*/ flags) {
+ C.memmove (flags, new int[] {nsIClassInfo.MAIN_THREAD_ONLY}, 4); /* PRUint32 */
+ return XPCOM.NS_OK;
+}
+
+int getHelperForLanguage (int language, int /*long*/ _retValue) {
+ C.memmove (_retValue, new int /*long*/[] {0}, C.PTR_SIZEOF);
+ return XPCOM.NS_OK;
+}
+
+int getImplementationLanguage (int /*long*/ _retValue) {
+ C.memmove (_retValue, new int[] {5}, 4); /* nsIProgrammingLanguage.JAVA */ /* PRUint */
+ return XPCOM.NS_OK;
+}
+
+
+int getInterfaces (int /*long*/ count, int /*long*/ array) {
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = XPCOM.NS_GetServiceManager (result);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (result[0] == 0) Mozilla.error (XPCOM.NS_NOINTERFACE);
+
+ nsIServiceManager serviceManager = new nsIServiceManager (result[0]);
+ result[0] = 0;
+ byte[] aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_MEMORY_CONTRACTID, true);
+ rc = serviceManager.GetServiceByContractID (aContractID, nsIMemory.NS_IMEMORY_IID, result);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (result[0] == 0) Mozilla.error (XPCOM.NS_NOINTERFACE);
+ serviceManager.Release ();
+
+ nsIMemory memory = new nsIMemory (result[0]);
+ result[0] = 0;
+ int /*long*/ securityCheckedComponentIID = memory.Alloc (nsID.sizeof);
+ XPCOM.memmove (securityCheckedComponentIID, nsISecurityCheckedComponent.NS_ISECURITYCHECKEDCOMPONENT_IID, nsID.sizeof);
+ int /*long*/ externalIID = memory.Alloc (nsID.sizeof);
+ XPCOM.memmove (externalIID, EXTERNAL_IID, nsID.sizeof);
+ int /*long*/ ptrArray = memory.Alloc (2 * C.PTR_SIZEOF);
+ C.memmove (ptrArray, new int /*long*/[] {securityCheckedComponentIID}, C.PTR_SIZEOF);
+ C.memmove (ptrArray + C.PTR_SIZEOF, new int /*long*/[] {externalIID}, C.PTR_SIZEOF);
+ C.memmove (array, new int /*long*/[] {ptrArray}, C.PTR_SIZEOF);
+ memory.Release ();
+
+ C.memmove (count, new int[] {2}, 4); /* PRUint */
+ return XPCOM.NS_OK;
+}
+
+/* nsISecurityCheckedComponent */
+
+int canCreateWrapper (int /*long*/ iid, int /*long*/ _retVal) {
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = XPCOM.NS_GetServiceManager (result);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (result[0] == 0) Mozilla.error (XPCOM.NS_NOINTERFACE);
+
+ nsIServiceManager serviceManager = new nsIServiceManager (result[0]);
+ result[0] = 0;
+ byte[] aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_MEMORY_CONTRACTID, true);
+ rc = serviceManager.GetServiceByContractID (aContractID, nsIMemory.NS_IMEMORY_IID, result);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (result[0] == 0) Mozilla.error (XPCOM.NS_NOINTERFACE);
+ serviceManager.Release ();
+
+ nsIMemory memory = new nsIMemory (result[0]);
+ result[0] = 0;
+ byte[] bytes = MozillaDelegate.wcsToMbcs (null, "allAccess", true); //$NON-NLS-1$
+ int /*long*/ ptr = memory.Alloc (bytes.length);
+ C.memmove (ptr, bytes, bytes.length);
+ C.memmove (_retVal, new int /*long*/[] {ptr}, C.PTR_SIZEOF);
+ memory.Release ();
+
+ return XPCOM.NS_OK;
+}
+
+int canCallMethod (int /*long*/ iid, int /*long*/ methodName, int /*long*/ _retVal) {
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = XPCOM.NS_GetServiceManager (result);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (result[0] == 0) Mozilla.error (XPCOM.NS_NOINTERFACE);
+
+ nsIServiceManager serviceManager = new nsIServiceManager (result[0]);
+ result[0] = 0;
+ byte[] aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_MEMORY_CONTRACTID, true);
+ rc = serviceManager.GetServiceByContractID (aContractID, nsIMemory.NS_IMEMORY_IID, result);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (result[0] == 0) Mozilla.error (XPCOM.NS_NOINTERFACE);
+ serviceManager.Release ();
+
+ nsIMemory memory = new nsIMemory (result[0]);
+ result[0] = 0;
+ int length = XPCOM.strlen_PRUnichar (methodName);
+ char[] dest = new char[length];
+ XPCOM.memmove (dest, methodName, length * 2);
+ String string = new String (dest);
+ byte[] bytes;
+ if (string.equals("callJava")) { //$NON-NLS-1$
+ bytes = MozillaDelegate.wcsToMbcs (null, "allAccess", true); //$NON-NLS-1$
+ } else {
+ bytes = MozillaDelegate.wcsToMbcs (null, "noAccess", true); //$NON-NLS-1$
+ }
+ int /*long*/ ptr = memory.Alloc (bytes.length);
+ C.memmove (ptr, bytes, bytes.length);
+ C.memmove (_retVal, new int /*long*/[] {ptr}, C.PTR_SIZEOF);
+ memory.Release ();
+
+ return XPCOM.NS_OK;
+}
+
+int canGetProperty (int /*long*/ iid, int /*long*/ propertyName, int /*long*/ _retVal) {
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = XPCOM.NS_GetServiceManager (result);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (result[0] == 0) Mozilla.error (XPCOM.NS_NOINTERFACE);
+
+ nsIServiceManager serviceManager = new nsIServiceManager (result[0]);
+ result[0] = 0;
+ byte[] aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_MEMORY_CONTRACTID, true);
+ rc = serviceManager.GetServiceByContractID (aContractID, nsIMemory.NS_IMEMORY_IID, result);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (result[0] == 0) Mozilla.error (XPCOM.NS_NOINTERFACE);
+ serviceManager.Release ();
+
+ nsIMemory memory = new nsIMemory (result[0]);
+ result[0] = 0;
+ byte[] bytes = MozillaDelegate.wcsToMbcs (null, "noAccess", true); //$NON-NLS-1$
+ int /*long*/ ptr = memory.Alloc (bytes.length);
+ C.memmove (ptr, bytes, bytes.length);
+ C.memmove (_retVal, new int /*long*/[] {ptr}, C.PTR_SIZEOF);
+ memory.Release ();
+
+ return XPCOM.NS_OK;
+}
+
+int canSetProperty (int /*long*/ iid, int /*long*/ propertyName, int /*long*/ _retVal) {
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = XPCOM.NS_GetServiceManager (result);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (result[0] == 0) Mozilla.error (XPCOM.NS_NOINTERFACE);
+
+ nsIServiceManager serviceManager = new nsIServiceManager (result[0]);
+ result[0] = 0;
+ byte[] aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_MEMORY_CONTRACTID, true);
+ rc = serviceManager.GetServiceByContractID (aContractID, nsIMemory.NS_IMEMORY_IID, result);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (result[0] == 0) Mozilla.error (XPCOM.NS_NOINTERFACE);
+ serviceManager.Release ();
+
+ nsIMemory memory = new nsIMemory (result[0]);
+ result[0] = 0;
+ byte[] bytes = MozillaDelegate.wcsToMbcs (null, "noAccess", true); //$NON-NLS-1$
+ int /*long*/ ptr = memory.Alloc (bytes.length);
+ C.memmove (ptr, bytes, bytes.length);
+ C.memmove (_retVal, new int /*long*/[] {ptr}, C.PTR_SIZEOF);
+ memory.Release ();
+
+ return XPCOM.NS_OK;
+}
+
+/* external */
+
+Object convertToJava (nsIVariant variant, short type) {
+ switch (type) {
+ case nsIDataType.VTYPE_EMPTY:
+ case nsIDataType.VTYPE_VOID:
+ return null;
+ case nsIDataType.VTYPE_EMPTY_ARRAY:
+ return new Object[0];
+ case nsIDataType.VTYPE_BOOL:
+ int[] boolResult = new int[1]; /*PRInt32*/
+ int rc = variant.GetAsBool (boolResult);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ return new Boolean (boolResult[0] != 0);
+ case nsIDataType.VTYPE_INT32:
+ int[] intResult = new int[1]; /*PRInt32*/
+ rc = variant.GetAsInt32 (intResult);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ return new Double (intResult[0]);
+ case nsIDataType.VTYPE_DOUBLE:
+ int /*long*/ doubleReturn = C.malloc (8);
+ rc = variant.GetAsDouble (doubleReturn);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ double[] doubleResult = new double[1];
+ C.memmove (doubleResult, doubleReturn, 8);
+ C.free (doubleReturn);
+ return new Double (doubleResult[0]);
+ case nsIDataType.VTYPE_WSTRING_SIZE_IS:
+ int[] size = new int[1]; /* PRInt32 */
+ int /*long*/[] wString = new int /*long*/[1];
+ rc = variant.GetAsWStringWithSize (size, wString);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ char[] chars = new char[size[0]];
+ C.memmove (chars, wString[0], size[0] * 2);
+ return new String (chars);
+ case nsIDataType.VTYPE_ARRAY:
+ Object[] arrayReturn = new Object[0];
+ int /*long*/ iid = C.malloc (nsID.sizeof);
+ C.memset (iid, 0, nsID.sizeof);
+ int[] count = new int[1]; /* PRUint32 */
+ short[] currentType = new short[1];
+ int /*long*/[] ptr = new int /*long*/[1];
+ rc = variant.GetAsArray (currentType, iid, count, ptr);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (ptr[0] == 0) Mozilla.error (XPCOM.NS_ERROR_NULL_POINTER);
+ nsID id = new nsID ();
+ XPCOM.memmove (id, iid, nsID.sizeof);
+ C.free (iid);
+
+ int /*long*/[] result = new int /*long*/[1];
+ rc = XPCOM.NS_GetServiceManager (result);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (result[0] == 0) Mozilla.error (XPCOM.NS_NOINTERFACE);
+
+ nsIServiceManager serviceManager = new nsIServiceManager (result[0]);
+ result[0] = 0;
+ byte[] aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_MEMORY_CONTRACTID, true);
+ rc = serviceManager.GetServiceByContractID (aContractID, nsIMemory.NS_IMEMORY_IID, result);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (result[0] == 0) Mozilla.error (XPCOM.NS_NOINTERFACE);
+ serviceManager.Release ();
+
+ nsIMemory memory = new nsIMemory (result[0]);
+ result[0] = 0;
+
+ if (id.Equals (nsIVariant.NS_IVARIANT_IID)) {
+ arrayReturn = new Object[count[0]];
+ for (int i = 0; i < count[0]; i++) {
+ int /*long*/[] arrayPtr = new int /*long*/[1];
+ C.memmove (arrayPtr, ptr[0] + i * C.PTR_SIZEOF, C.PTR_SIZEOF);
+ nsISupports supports = new nsISupports (arrayPtr[0]);
+ rc = supports.QueryInterface (nsIVariant.NS_IVARIANT_IID, result);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (result[0] == 0) Mozilla.error (XPCOM.NS_NOINTERFACE);
+
+ nsIVariant currentVariant = new nsIVariant (result[0]);
+ result[0] = 0;
+ currentType[0] = 0;
+ rc = currentVariant.GetDataType (currentType);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ try {
+ arrayReturn[i] = convertToJava (currentVariant, currentType[0]);
+ currentVariant.Release ();
+ } catch (IllegalArgumentException e) {
+ /* invalid argument value type */
+ currentVariant.Release ();
+ memory.Free (ptr[0]);
+ memory.Release ();
+ throw e;
+ }
+ }
+ } else {
+ switch (currentType[0]) {
+ case nsIDataType.VTYPE_DOUBLE:
+ arrayReturn = new Object[count[0]];
+ for (int i = 0; i < count[0]; i++) {
+ double[] doubleValue = new double[1];
+ C.memmove (doubleValue, ptr[0] + i * 8, 8);
+ arrayReturn[i] = new Double (doubleValue[0]);
+ }
+ break;
+ case nsIDataType.VTYPE_BOOL:
+ arrayReturn = new Object[count[0]];
+ for (int i = 0; i < count[0]; i++) {
+ int[] boolValue = new int[1]; /* PRUInt32 */
+ C.memmove (boolValue, ptr[0] + i * 4, 4);
+ arrayReturn[i] = new Boolean (boolValue[0] != 0);
+ }
+ break;
+ case nsIDataType.VTYPE_INT32:
+ arrayReturn = new Object[count[0]];
+ for (int i = 0; i < count[0]; i++) {
+ int[] intValue = new int[1]; /* PRInt32 */
+ C.memmove (intValue, ptr[0] + i * 4, 4);
+ arrayReturn[i] = new Double (intValue[0]);
+ }
+ break;
+ case nsIDataType.VTYPE_WCHAR_STR:
+ arrayReturn = new Object[count[0]];
+ for (int i = 0; i < count[0]; i++) {
+ int /*long*/ currentPtr = ptr[0] + i * C.PTR_SIZEOF;
+ int /*long*/[] stringPtr = new int /*long*/[1];
+ C.memmove (stringPtr, currentPtr, C.PTR_SIZEOF);
+ int length = XPCOM.strlen_PRUnichar (stringPtr[0]);
+ char[] dest = new char[length];
+ XPCOM.memmove (dest, stringPtr[0], length * 2);
+ arrayReturn[i] = new String (dest);
+ }
+ break;
+ default:
+ memory.Free (ptr[0]);
+ memory.Release ();
+ SWT.error (SWT.ERROR_INVALID_ARGUMENT);
+ }
+ }
+ memory.Free (ptr[0]);
+ memory.Release ();
+ return arrayReturn;
+ }
+ SWT.error (SWT.ERROR_INVALID_ARGUMENT);
+ return null;
+}
+
+nsIVariant convertToJS (Object value, nsIComponentManager componentManager) {
+ int /*long*/[] result = new int /*long*/[1];
+ byte[] aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_VARIANT_CONTRACTID, true);
+ int rc = componentManager.CreateInstanceByContractID (aContractID, 0, nsIWritableVariant.NS_IWRITABLEVARIANT_IID, result);
+ nsIWritableVariant variant = new nsIWritableVariant (result[0]);
+ result[0] = 0;
+
+ if (value == null) {
+ rc = variant.SetAsVoid ();
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ return variant;
+ }
+ if (value instanceof String) {
+ String stringValue = (String)value;
+ int length = stringValue.length ();
+ char[] chars = new char[length];
+ stringValue.getChars (0, length, chars, 0);
+ rc = variant.SetAsWStringWithSize (length, chars);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ return variant;
+ }
+ if (value instanceof Boolean) {
+ Boolean booleanValue = (Boolean)value;
+ rc = variant.SetAsBool (booleanValue.booleanValue () ? 1 : 0);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ return variant;
+ }
+ if (value instanceof Number) {
+ Number numberValue = (Number)value;
+ rc = variant.SetAsDouble (numberValue.doubleValue ());
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ return variant;
+ }
+ if (value instanceof Object[]) {
+ Object[] arrayValue = (Object[])value;
+ int length = arrayValue.length;
+ if (length > 0) {
+ int /*long*/ arrayPtr = C.malloc (C.PTR_SIZEOF * length);
+ for (int i = 0; i < length; i++) {
+ Object currentObject = arrayValue[i];
+ try {
+ nsIVariant currentVariant = convertToJS (currentObject, componentManager);
+ C.memmove (arrayPtr + C.PTR_SIZEOF * i, new int /*long*/[] {currentVariant.getAddress ()}, C.PTR_SIZEOF);
+ } catch (SWTException e) {
+ /* invalid return value type */
+ C.free (arrayPtr);
+ variant.Release ();
+ /* release the variants that had previously been added to the array */
+ for (int j = 0; j < i; j++) {
+ int /*long*/[] ptr = new int /*long*/[1];
+ C.memmove (ptr, arrayPtr + C.PTR_SIZEOF * j, C.PTR_SIZEOF);
+ new nsISupports (ptr[0]).Release ();
+ }
+ throw e;
+ }
+ }
+ int /*long*/ idPtr = C.malloc (nsID.sizeof);
+ XPCOM.memmove (idPtr, nsIVariant.NS_IVARIANT_IID, nsID.sizeof);
+ rc = variant.SetAsArray (nsIDataType.VTYPE_INTERFACE_IS, idPtr, length, arrayPtr);
+ C.free (idPtr);
+ C.free (arrayPtr);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ return variant;
+ }
+ }
+
+ variant.Release ();
+ SWT.error (SWT.ERROR_INVALID_RETURN_VALUE);
+ return null;
+}
+
+int callJava (int functionId, int /*long*/ args, int /*long*/ returnPtr) {
+ Object key = new Integer (functionId);
+ BrowserFunction function = (BrowserFunction)Mozilla.AllFunctions.get (key);
+ Object returnValue = null;
+
+ if (function != null) {
+ short[] type = new short[1]; /* PRUint16 */
+ nsIVariant variant = new nsIVariant (args);
+ int rc = variant.GetDataType (type);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ try {
+ Object temp = (Object[])convertToJava (variant, type[0]);
+ if (temp instanceof Object[]) {
+ Object[] arguments = (Object[])temp;
+ try {
+ returnValue = function.function (arguments);
+ } catch (Exception e) {
+ /* exception during function invocation */
+ returnValue = WebBrowser.CreateErrorString (e.getLocalizedMessage ());
+ }
+ }
+ } catch (IllegalArgumentException e) {
+ /* invalid argument value type */
+ if (function.isEvaluate) {
+ /* notify the evaluate function so that a java exception can be thrown */
+ function.function (new String[] {WebBrowser.CreateErrorString (new SWTException (SWT.ERROR_INVALID_RETURN_VALUE).getLocalizedMessage ())});
+ }
+ returnValue = WebBrowser.CreateErrorString (e.getLocalizedMessage ());
+ }
+ }
+
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = XPCOM.NS_GetComponentManager (result);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (result[0] == 0) Mozilla.error (XPCOM.NS_NOINTERFACE);
+ nsIComponentManager componentManager = new nsIComponentManager (result[0]);
+ result[0] = 0;
+ nsIVariant variant;
+ try {
+ variant = convertToJS (returnValue, componentManager);
+ } catch (SWTException e) {
+ /* invalid return value type */
+ variant = convertToJS (WebBrowser.CreateErrorString (e.getLocalizedMessage ()), componentManager);
+ }
+ componentManager.Release ();
+ C.memmove (returnPtr, new int /*long*/[] {variant.getAddress ()}, C.PTR_SIZEOF);
+
+ return XPCOM.NS_OK;
+}
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/ExternalFactory.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/ExternalFactory.java
new file mode 100644
index 0000000000..84462ec2f0
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/ExternalFactory.java
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ * Copyright (c) 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swt.browser;
+
+import org.eclipse.swt.internal.*;
+import org.eclipse.swt.internal.mozilla.*;
+
+class ExternalFactory {
+ XPCOMObject supports;
+ XPCOMObject factory;
+ int refCount = 0;
+
+ExternalFactory () {
+ createCOMInterfaces ();
+}
+
+int AddRef () {
+ refCount++;
+ return refCount;
+}
+
+void createCOMInterfaces () {
+ /* Create each of the interfaces that this object implements */
+ supports = new XPCOMObject (new int[] {2, 0, 0}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ };
+
+ factory = new XPCOMObject (new int[] {2, 0, 0, 3, 1}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return CreateInstance (args[0], args[1], args[2]);}
+ public int /*long*/ method4 (int /*long*/[] args) {return LockFactory ((int)/*64*/args[0]);}
+ };
+}
+
+void disposeCOMInterfaces () {
+ if (supports != null) {
+ supports.dispose ();
+ supports = null;
+ }
+ if (factory != null) {
+ factory.dispose ();
+ factory = null;
+ }
+}
+
+int /*long*/ getAddress () {
+ return factory.getAddress ();
+}
+
+int QueryInterface (int /*long*/ riid, int /*long*/ ppvObject) {
+ if (riid == 0 || ppvObject == 0) return XPCOM.NS_ERROR_NO_INTERFACE;
+ nsID guid = new nsID ();
+ XPCOM.memmove (guid, riid, nsID.sizeof);
+
+ if (guid.Equals (nsISupports.NS_ISUPPORTS_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {supports.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsIFactory.NS_IFACTORY_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {factory.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+
+ XPCOM.memmove (ppvObject, new int /*long*/[] {0}, C.PTR_SIZEOF);
+ return XPCOM.NS_ERROR_NO_INTERFACE;
+}
+
+int Release () {
+ refCount--;
+ if (refCount == 0) disposeCOMInterfaces ();
+ return refCount;
+}
+
+/* nsIFactory */
+
+int CreateInstance (int /*long*/ aOuter, int /*long*/ iid, int /*long*/ result) {
+ External external = new External ();
+ external.AddRef ();
+ XPCOM.memmove (result, new int /*long*/[] {external.getAddress ()}, C.PTR_SIZEOF);
+ return XPCOM.NS_OK;
+}
+
+int LockFactory (int lock) {
+ return XPCOM.NS_OK;
+}
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/FilePicker.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/FilePicker.java
new file mode 100644
index 0000000000..cb7b397ec9
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/FilePicker.java
@@ -0,0 +1,306 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swt.browser;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.internal.*;
+import org.eclipse.swt.internal.mozilla.*;
+import org.eclipse.swt.widgets.*;
+
+class FilePicker {
+ XPCOMObject supports;
+ XPCOMObject filePicker;
+
+ int refCount = 0;
+ short mode;
+ int /*long*/ parentHandle;
+ String[] files, masks;
+ String defaultFilename, directory, title;
+
+ static final String SEPARATOR = System.getProperty ("file.separator"); //$NON-NLS-1$
+
+FilePicker () {
+ createCOMInterfaces ();
+}
+
+int AddRef () {
+ refCount++;
+ return refCount;
+}
+
+void createCOMInterfaces () {
+ /* Create each of the interfaces that this object implements */
+ supports = new XPCOMObject (new int[] {2, 0, 0}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ };
+
+ filePicker = new XPCOMObject (new int[] {2, 0, 0, 3, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return Init (args[0], args[1], (short)args[2]);}
+ public int /*long*/ method4 (int /*long*/[] args) {return AppendFilters ((int)/*64*/args[0]);}
+ public int /*long*/ method5 (int /*long*/[] args) {return AppendFilter (args[0], args[1]);}
+ public int /*long*/ method6 (int /*long*/[] args) {return GetDefaultString (args[0]);}
+ public int /*long*/ method7 (int /*long*/[] args) {return SetDefaultString (args[0]);}
+ public int /*long*/ method8 (int /*long*/[] args) {return GetDefaultExtension (args[0]);}
+ public int /*long*/ method9 (int /*long*/[] args) {return SetDefaultExtension (args[0]);}
+ public int /*long*/ method10 (int /*long*/[] args) {return GetFilterIndex (args[0]);}
+ public int /*long*/ method11 (int /*long*/[] args) {return SetFilterIndex ((int)/*64*/args[0]);}
+ public int /*long*/ method12 (int /*long*/[] args) {return GetDisplayDirectory (args[0]);}
+ public int /*long*/ method13 (int /*long*/[] args) {return SetDisplayDirectory (args[0]);}
+ public int /*long*/ method14 (int /*long*/[] args) {return GetFile (args[0]);}
+ public int /*long*/ method15 (int /*long*/[] args) {return GetFileURL (args[0]);}
+ public int /*long*/ method16 (int /*long*/[] args) {return GetFiles (args[0]);}
+ public int /*long*/ method17 (int /*long*/[] args) {return Show (args[0]);}
+ };
+}
+
+void disposeCOMInterfaces () {
+ if (supports != null) {
+ supports.dispose ();
+ supports = null;
+ }
+ if (filePicker != null) {
+ filePicker.dispose ();
+ filePicker = null;
+ }
+}
+
+int /*long*/ getAddress () {
+ return filePicker.getAddress ();
+}
+
+int QueryInterface (int /*long*/ riid, int /*long*/ ppvObject) {
+ if (riid == 0 || ppvObject == 0) return XPCOM.NS_ERROR_NO_INTERFACE;
+ nsID guid = new nsID ();
+ XPCOM.memmove (guid, riid, nsID.sizeof);
+
+ if (guid.Equals (nsISupports.NS_ISUPPORTS_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {supports.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsIFilePicker.NS_IFILEPICKER_IID)) {
+ XPCOM.memmove(ppvObject, new int /*long*/[] {filePicker.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsIFilePicker_1_8.NS_IFILEPICKER_IID)) {
+ XPCOM.memmove(ppvObject, new int /*long*/[] {filePicker.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+
+ XPCOM.memmove (ppvObject, new int /*long*/[] {0}, C.PTR_SIZEOF);
+ return XPCOM.NS_ERROR_NO_INTERFACE;
+}
+
+int Release () {
+ refCount--;
+ if (refCount == 0) disposeCOMInterfaces ();
+ return refCount;
+}
+
+Browser getBrowser (int /*long*/ aDOMWindow) {
+ if (aDOMWindow == 0) return null;
+ nsIDOMWindow window = new nsIDOMWindow (aDOMWindow);
+ return Mozilla.findBrowser (window);
+}
+
+/*
+ * As of Mozilla 1.8 some of nsIFilePicker's string arguments changed type. This method
+ * answers a java string based on the type of string that is appropriate for the Mozilla
+ * version being used.
+ */
+String parseAString (int /*long*/ string) {
+ return null;
+}
+
+/* nsIFilePicker */
+
+int Init (int /*long*/ parent, int /*long*/ title, short mode) {
+ parentHandle = parent;
+ this.mode = mode;
+ this.title = parseAString (title);
+ return XPCOM.NS_OK;
+}
+
+int Show (int /*long*/ _retval) {
+ if (mode == nsIFilePicker.modeGetFolder) {
+ /* picking a directory */
+ int result = showDirectoryPicker ();
+ XPCOM.memmove (_retval, new short[] {(short)result}, 2); /* PRInt16 */
+ return XPCOM.NS_OK;
+ }
+
+ /* picking a file */
+ int style = mode == nsIFilePicker.modeSave ? SWT.SAVE : SWT.OPEN;
+ if (mode == nsIFilePicker.modeOpenMultiple) style |= SWT.MULTI;
+ Browser browser = getBrowser (parentHandle);
+ Shell parent = null;
+ if (browser != null) {
+ parent = browser.getShell ();
+ } else {
+ parent = new Shell ();
+ }
+ FileDialog dialog = new FileDialog (parent, style);
+ if (title != null) dialog.setText (title);
+ if (directory != null) dialog.setFilterPath (directory);
+ if (masks != null) dialog.setFilterExtensions (masks);
+ if (defaultFilename != null) dialog.setFileName (defaultFilename);
+ String filename = dialog.open ();
+ files = dialog.getFileNames ();
+ directory = dialog.getFilterPath ();
+ title = defaultFilename = null;
+ masks = null;
+ int result = filename == null ? nsIFilePicker.returnCancel : nsIFilePicker.returnOK;
+ XPCOM.memmove (_retval, new short[] {(short)result}, 2); /* PRInt16 */
+ return XPCOM.NS_OK;
+}
+
+int showDirectoryPicker () {
+ Browser browser = getBrowser (parentHandle);
+ Shell parent = null;
+ if (browser != null) {
+ parent = browser.getShell ();
+ } else {
+ parent = new Shell ();
+ }
+ DirectoryDialog dialog = new DirectoryDialog (parent, SWT.NONE);
+ if (title != null) dialog.setText (title);
+ if (directory != null) dialog.setFilterPath (directory);
+ directory = dialog.open ();
+ title = defaultFilename = null;
+ files = masks = null;
+ return directory == null ? nsIFilePicker.returnCancel : nsIFilePicker.returnOK;
+}
+
+int GetFiles (int /*long*/ aFiles) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int GetFileURL (int /*long*/ aFileURL) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int GetFile (int /*long*/ aFile) {
+ String filename = ""; //$NON-NLS-1$
+ if (directory != null) filename += directory + SEPARATOR;
+ if (files != null && files.length > 0) filename += files[0];
+ nsEmbedString path = new nsEmbedString (filename);
+ int /*long*/[] file = new int /*long*/[1];
+ int rc = XPCOM.NS_NewLocalFile (path.getAddress (), 1, file);
+ path.dispose ();
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (file[0] == 0) Mozilla.error (XPCOM.NS_ERROR_NULL_POINTER);
+ XPCOM.memmove (aFile, file, C.PTR_SIZEOF);
+ return XPCOM.NS_OK;
+}
+
+int SetDisplayDirectory (int /*long*/ aDisplayDirectory) {
+ if (aDisplayDirectory == 0) return XPCOM.NS_OK;
+ nsILocalFile file = new nsILocalFile (aDisplayDirectory);
+ int /*long*/ pathname = XPCOM.nsEmbedCString_new ();
+ file.GetNativePath (pathname);
+ int length = XPCOM.nsEmbedCString_Length (pathname);
+ int /*long*/ buffer = XPCOM.nsEmbedCString_get (pathname);
+ byte[] bytes = new byte[length];
+ XPCOM.memmove (bytes, buffer, length);
+ XPCOM.nsEmbedCString_delete (pathname);
+ char[] chars = MozillaDelegate.mbcsToWcs (null, bytes);
+ directory = new String (chars);
+ return XPCOM.NS_OK;
+}
+
+int GetDisplayDirectory (int /*long*/ aDisplayDirectory) {
+ String directoryName = directory != null ? directory : ""; //$NON-NLS-1$
+ nsEmbedString path = new nsEmbedString (directoryName);
+ int /*long*/[] file = new int /*long*/[1];
+ int rc = XPCOM.NS_NewLocalFile (path.getAddress (), 1, file);
+ path.dispose ();
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (file[0] == 0) Mozilla.error (XPCOM.NS_ERROR_NULL_POINTER);
+ XPCOM.memmove (aDisplayDirectory, file, C.PTR_SIZEOF);
+ return XPCOM.NS_OK;
+}
+
+int SetFilterIndex (int aFilterIndex) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int GetFilterIndex (int /*long*/ aFilterIndex) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int SetDefaultExtension (int /*long*/ aDefaultExtension) {
+ /* note that the type of argument 1 changed as of Mozilla 1.8 */
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int GetDefaultExtension (int /*long*/ aDefaultExtension) {
+ /* note that the type of argument 1 changed as of Mozilla 1.8 */
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int SetDefaultString (int /*long*/ aDefaultString) {
+ defaultFilename = parseAString (aDefaultString);
+ return XPCOM.NS_OK;
+}
+
+int GetDefaultString (int /*long*/ aDefaultString) {
+ /* note that the type of argument 1 changed as of Mozilla 1.8 */
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int AppendFilter (int /*long*/ title, int /*long*/ filter) {
+ /* note that the type of arguments 1 and 2 changed as of Mozilla 1.8 */
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int AppendFilters (int filterMask) {
+ String[] addFilters = null;
+ switch (filterMask) {
+ case nsIFilePicker.filterAll:
+ case nsIFilePicker.filterApps:
+ masks = null; /* this is equivalent to no filter */
+ break;
+ case nsIFilePicker.filterHTML:
+ addFilters = new String[] {"*.htm;*.html"}; //$NON-NLS-1$
+ break;
+ case nsIFilePicker.filterImages:
+ addFilters = new String[] {"*.gif;*.jpeg;*.jpg;*.png"}; //$NON-NLS-1$
+ break;
+ case nsIFilePicker.filterText:
+ addFilters = new String[] {"*.txt"}; //$NON-NLS-1$
+ break;
+ case nsIFilePicker.filterXML:
+ addFilters = new String[] {"*.xml"}; //$NON-NLS-1$
+ break;
+ case nsIFilePicker.filterXUL:
+ addFilters = new String[] {"*.xul"}; //$NON-NLS-1$
+ break;
+ }
+ if (masks == null) {
+ masks = addFilters;
+ } else {
+ if (addFilters != null) {
+ String[] newFilters = new String[masks.length + addFilters.length];
+ System.arraycopy (masks, 0, newFilters, 0, masks.length);
+ System.arraycopy (addFilters, 0, newFilters, masks.length, addFilters.length);
+ masks = newFilters;
+ }
+ }
+ return XPCOM.NS_OK;
+}
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/FilePickerFactory.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/FilePickerFactory.java
new file mode 100644
index 0000000000..44dbff17f9
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/FilePickerFactory.java
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swt.browser;
+
+import org.eclipse.swt.internal.C;
+import org.eclipse.swt.internal.mozilla.*;
+
+class FilePickerFactory {
+ XPCOMObject supports;
+ XPCOMObject factory;
+ int refCount = 0;
+
+FilePickerFactory () {
+ createCOMInterfaces ();
+}
+
+int AddRef () {
+ refCount++;
+ return refCount;
+}
+
+void createCOMInterfaces () {
+ /* Create each of the interfaces that this object implements */
+ supports = new XPCOMObject (new int[] {2, 0, 0}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ };
+
+ factory = new XPCOMObject (new int[] {2, 0, 0, 3, 1}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return CreateInstance (args[0], args[1], args[2]);}
+ public int /*long*/ method4 (int /*long*/[] args) {return LockFactory ((int)/*64*/args[0]);}
+ };
+}
+
+void disposeCOMInterfaces () {
+ if (supports != null) {
+ supports.dispose ();
+ supports = null;
+ }
+ if (factory != null) {
+ factory.dispose ();
+ factory = null;
+ }
+}
+
+int /*long*/ getAddress () {
+ return factory.getAddress ();
+}
+
+int QueryInterface (int /*long*/ riid, int /*long*/ ppvObject) {
+ if (riid == 0 || ppvObject == 0) return XPCOM.NS_ERROR_NO_INTERFACE;
+ nsID guid = new nsID ();
+ XPCOM.memmove (guid, riid, nsID.sizeof);
+
+ if (guid.Equals (nsISupports.NS_ISUPPORTS_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {supports.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsIFactory.NS_IFACTORY_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {factory.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+
+ XPCOM.memmove (ppvObject, new int /*long*/[] {0}, C.PTR_SIZEOF);
+ return XPCOM.NS_ERROR_NO_INTERFACE;
+}
+
+int Release () {
+ refCount--;
+ if (refCount == 0) disposeCOMInterfaces ();
+ return refCount;
+}
+
+/* nsIFactory */
+
+int CreateInstance (int /*long*/ aOuter, int /*long*/ iid, int /*long*/ result) {
+ FilePicker picker = new FilePicker ();
+ picker.AddRef ();
+ XPCOM.memmove (result, new int /*long*/[] {picker.getAddress ()}, C.PTR_SIZEOF);
+ return XPCOM.NS_OK;
+}
+
+int LockFactory (int lock) {
+ return XPCOM.NS_OK;
+}
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/FilePickerFactory_1_8.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/FilePickerFactory_1_8.java
new file mode 100644
index 0000000000..b47095b3b4
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/FilePickerFactory_1_8.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swt.browser;
+
+import org.eclipse.swt.internal.C;
+import org.eclipse.swt.internal.mozilla.*;
+
+class FilePickerFactory_1_8 extends FilePickerFactory {
+
+void createCOMInterfaces () {
+ /* Create each of the interfaces that this object implements */
+ supports = new XPCOMObject (new int[] {2, 0, 0}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ };
+
+ factory = new XPCOMObject (new int[] {2, 0, 0, 3, 1}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return CreateInstance (args[0], args[1], args[2]);}
+ public int /*long*/ method4 (int /*long*/[] args) {return LockFactory ((int)/*64*/args[0]);}
+ };
+}
+
+/* nsIFactory */
+
+int CreateInstance (int /*long*/ aOuter, int /*long*/ iid, int /*long*/ result) {
+ FilePicker_1_8 picker = new FilePicker_1_8 ();
+ picker.AddRef ();
+ XPCOM.memmove (result, new int /*long*/[] {picker.getAddress ()}, C.PTR_SIZEOF);
+ return XPCOM.NS_OK;
+}
+
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/FilePicker_1_8.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/FilePicker_1_8.java
new file mode 100644
index 0000000000..a73840fd8c
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/FilePicker_1_8.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swt.browser;
+
+import org.eclipse.swt.internal.mozilla.*;
+
+class FilePicker_1_8 extends FilePicker {
+
+void createCOMInterfaces () {
+ /* Create each of the interfaces that this object implements */
+ supports = new XPCOMObject (new int[] {2, 0, 0}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ };
+
+ filePicker = new XPCOMObject (new int[] {2, 0, 0, 3, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return Init (args[0], args[1], (short)args[2]);}
+ public int /*long*/ method4 (int /*long*/[] args) {return AppendFilters ((int)/*64*/args[0]);}
+ public int /*long*/ method5 (int /*long*/[] args) {return AppendFilter (args[0], args[1]);}
+ public int /*long*/ method6 (int /*long*/[] args) {return GetDefaultString (args[0]);}
+ public int /*long*/ method7 (int /*long*/[] args) {return SetDefaultString (args[0]);}
+ public int /*long*/ method8 (int /*long*/[] args) {return GetDefaultExtension (args[0]);}
+ public int /*long*/ method9 (int /*long*/[] args) {return SetDefaultExtension (args[0]);}
+ public int /*long*/ method10 (int /*long*/[] args) {return GetFilterIndex (args[0]);}
+ public int /*long*/ method11 (int /*long*/[] args) {return SetFilterIndex ((int)/*64*/args[0]);}
+ public int /*long*/ method12 (int /*long*/[] args) {return GetDisplayDirectory (args[0]);}
+ public int /*long*/ method13 (int /*long*/[] args) {return SetDisplayDirectory (args[0]);}
+ public int /*long*/ method14 (int /*long*/[] args) {return GetFile (args[0]);}
+ public int /*long*/ method15 (int /*long*/[] args) {return GetFileURL (args[0]);}
+ public int /*long*/ method16 (int /*long*/[] args) {return GetFiles (args[0]);}
+ public int /*long*/ method17 (int /*long*/[] args) {return Show (args[0]);}
+ };
+}
+
+/*
+ * As of Mozilla 1.8 some of nsIFilePicker's string arguments changed type. This method
+ * answers a java string based on the type of string that is appropriate for the Mozilla
+ * version being used.
+ */
+String parseAString (int /*long*/ string) {
+ if (string == 0) return null;
+ int length = XPCOM.nsEmbedString_Length (string);
+ int /*long*/ buffer = XPCOM.nsEmbedString_get (string);
+ char[] chars = new char[length];
+ XPCOM.memmove (chars, buffer, length * 2);
+ return new String (chars);
+}
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/HelperAppLauncherDialog.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/HelperAppLauncherDialog.java
new file mode 100644
index 0000000000..706ec0898e
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/HelperAppLauncherDialog.java
@@ -0,0 +1,208 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swt.browser;
+
+import org.eclipse.swt.*;
+import org.eclipse.swt.internal.C;
+import org.eclipse.swt.internal.mozilla.*;
+import org.eclipse.swt.widgets.*;
+
+/**
+ * This class implements the nsIHelperAppLauncherDialog interface for mozilla
+ * versions 1.4 - 1.8.x. For mozilla versions >= 1.9 this interface is
+ * implemented by class HelperAppLauncherDialog_1_9. HelperAppLauncherDialogFactory
+ * determines at runtime which of these classes to instantiate.
+ */
+class HelperAppLauncherDialog {
+ XPCOMObject supports;
+ XPCOMObject helperAppLauncherDialog;
+ int refCount = 0;
+
+HelperAppLauncherDialog () {
+ createCOMInterfaces ();
+}
+
+int AddRef () {
+ refCount++;
+ return refCount;
+}
+
+void createCOMInterfaces () {
+ /* Create each of the interfaces that this object implements */
+ supports = new XPCOMObject (new int[] {2, 0, 0}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ };
+
+ helperAppLauncherDialog = new XPCOMObject (new int[] {2, 0, 0, 3, 5}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return Show (args[0], args[1], (int)/*64*/args[2]);}
+ public int /*long*/ method4 (int /*long*/[] args) {return PromptForSaveToFile (args[0], args[1], args[2], args[3], args[4]);}
+ };
+}
+
+void disposeCOMInterfaces () {
+ if (supports != null) {
+ supports.dispose ();
+ supports = null;
+ }
+ if (helperAppLauncherDialog != null) {
+ helperAppLauncherDialog.dispose ();
+ helperAppLauncherDialog = null;
+ }
+}
+
+int /*long*/ getAddress () {
+ return helperAppLauncherDialog.getAddress ();
+}
+
+int QueryInterface (int /*long*/ riid, int /*long*/ ppvObject) {
+ if (riid == 0 || ppvObject == 0) return XPCOM.NS_ERROR_NO_INTERFACE;
+ nsID guid = new nsID ();
+ XPCOM.memmove (guid, riid, nsID.sizeof);
+
+ if (guid.Equals (nsISupports.NS_ISUPPORTS_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {supports.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsIHelperAppLauncherDialog.NS_IHELPERAPPLAUNCHERDIALOG_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {helperAppLauncherDialog.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+
+ XPCOM.memmove (ppvObject, new int /*long*/[] {0}, C.PTR_SIZEOF);
+ return XPCOM.NS_ERROR_NO_INTERFACE;
+}
+
+int Release () {
+ refCount--;
+ /*
+ * Note. This instance lives as long as the download it is binded to.
+ * Its reference count is expected to go down to 0 when the download
+ * has completed or when it has been cancelled. E.g. when the user
+ * cancels the File Dialog, cancels or closes the Download Dialog
+ * and when the Download Dialog goes away after the download is completed.
+ */
+ if (refCount == 0) disposeCOMInterfaces ();
+ return refCount;
+}
+
+/* nsIHelperAppLauncherDialog */
+
+int Show (int /*long*/ aLauncher, int /*long*/ aContext, int aReason) {
+ /*
+ * The interface for nsIHelperAppLauncher changed as of mozilla 1.8. Query the received
+ * nsIHelperAppLauncher for the new interface, and if it is not found then fall back to
+ * the old interface.
+ */
+ nsISupports supports = new nsISupports (aLauncher);
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = supports.QueryInterface (nsIHelperAppLauncher_1_8.NS_IHELPERAPPLAUNCHER_IID, result);
+ if (rc == XPCOM.NS_OK) { /* >= 1.8 */
+ nsIHelperAppLauncher_1_8 helperAppLauncher = new nsIHelperAppLauncher_1_8 (aLauncher);
+ rc = helperAppLauncher.SaveToDisk (0, 0);
+ helperAppLauncher.Release ();
+ return rc;
+ }
+ nsIHelperAppLauncher helperAppLauncher = new nsIHelperAppLauncher (aLauncher); /* < 1.8 */
+ return helperAppLauncher.SaveToDisk (0, 0);
+}
+
+int PromptForSaveToFile (int /*long*/ arg0, int /*long*/ arg1, int /*long*/ arg2, int /*long*/ arg3, int /*long*/ arg4) {
+ int /*long*/ aDefaultFile, aSuggestedFileExtension, _retval;
+ boolean hasLauncher = false;
+
+ /*
+ * The interface for nsIHelperAppLauncherDialog changed as of mozilla 1.5 when an
+ * extra argument was added to the PromptForSaveToFile method (this resulted in all
+ * subsequent arguments shifting right). The workaround is to provide an XPCOMObject
+ * that fits the newer API, and to use the first argument's type to infer whether
+ * the old or new nsIHelperAppLauncherDialog interface is being used (and by extension
+ * the ordering of the arguments). In mozilla >= 1.5 the first argument is an
+ * nsIHelperAppLauncher.
+ */
+ /*
+ * The interface for nsIHelperAppLauncher changed as of mozilla 1.8, so the first
+ * argument must be queried for both the old and new nsIHelperAppLauncher interfaces.
+ */
+ boolean using_1_8 = false;
+ nsISupports support = new nsISupports (arg0);
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = support.QueryInterface (nsIHelperAppLauncher_1_8.NS_IHELPERAPPLAUNCHER_IID, result);
+ if (rc == XPCOM.NS_OK) {
+ using_1_8 = true;
+ hasLauncher = true;
+ new nsISupports (result[0]).Release ();
+ } else {
+ result[0] = 0;
+ rc = support.QueryInterface (nsIHelperAppLauncher.NS_IHELPERAPPLAUNCHER_IID, result);
+ if (rc == XPCOM.NS_OK) {
+ hasLauncher = true;
+ new nsISupports (result[0]).Release ();
+ }
+ }
+ result[0] = 0;
+
+ if (hasLauncher) { /* >= 1.5 */
+ aDefaultFile = arg2;
+ aSuggestedFileExtension = arg3;
+ _retval = arg4;
+ } else { /* 1.4 */
+ aDefaultFile = arg1;
+ aSuggestedFileExtension = arg2;
+ _retval = arg3;
+ }
+
+ int length = XPCOM.strlen_PRUnichar (aDefaultFile);
+ char[] dest = new char[length];
+ XPCOM.memmove (dest, aDefaultFile, length * 2);
+ String defaultFile = new String (dest);
+
+ length = XPCOM.strlen_PRUnichar (aSuggestedFileExtension);
+ dest = new char[length];
+ XPCOM.memmove (dest, aSuggestedFileExtension, length * 2);
+ String suggestedFileExtension = new String (dest);
+
+ Shell shell = new Shell ();
+ FileDialog fileDialog = new FileDialog (shell, SWT.SAVE);
+ fileDialog.setFileName (defaultFile);
+ fileDialog.setFilterExtensions (new String[] {suggestedFileExtension});
+ String name = fileDialog.open ();
+ shell.close ();
+ if (name == null) {
+ if (hasLauncher) {
+ if (using_1_8) {
+ nsIHelperAppLauncher_1_8 launcher = new nsIHelperAppLauncher_1_8 (arg0);
+ rc = launcher.Cancel (XPCOM.NS_BINDING_ABORTED);
+ } else {
+ nsIHelperAppLauncher launcher = new nsIHelperAppLauncher (arg0);
+ rc = launcher.Cancel ();
+ }
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ return XPCOM.NS_OK;
+ }
+ return XPCOM.NS_ERROR_FAILURE;
+ }
+ nsEmbedString path = new nsEmbedString (name);
+ rc = XPCOM.NS_NewLocalFile (path.getAddress (), 1, result);
+ path.dispose ();
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (result[0] == 0) Mozilla.error (XPCOM.NS_ERROR_NULL_POINTER);
+ /* Our own nsIDownload has been registered during the Browser initialization. It will be invoked by Mozilla. */
+ XPCOM.memmove (_retval, result, C.PTR_SIZEOF);
+ return XPCOM.NS_OK;
+}
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/HelperAppLauncherDialogFactory.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/HelperAppLauncherDialogFactory.java
new file mode 100644
index 0000000000..21008f0ea9
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/HelperAppLauncherDialogFactory.java
@@ -0,0 +1,106 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swt.browser;
+
+import org.eclipse.swt.internal.C;
+import org.eclipse.swt.internal.mozilla.*;
+
+class HelperAppLauncherDialogFactory {
+ XPCOMObject supports;
+ XPCOMObject factory;
+ int refCount = 0;
+
+HelperAppLauncherDialogFactory () {
+ createCOMInterfaces ();
+}
+
+int AddRef () {
+ refCount++;
+ return refCount;
+}
+
+void createCOMInterfaces () {
+ /* Create each of the interfaces that this object implements */
+ supports = new XPCOMObject (new int[] {2, 0, 0}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ };
+
+ factory = new XPCOMObject (new int[] {2, 0, 0, 3, 1}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return CreateInstance (args[0], args[1], args[2]);}
+ public int /*long*/ method4 (int /*long*/[] args) {return LockFactory ((int)/*64*/args[0]);}
+ };
+}
+
+void disposeCOMInterfaces () {
+ if (supports != null) {
+ supports.dispose ();
+ supports = null;
+ }
+ if (factory != null) {
+ factory.dispose ();
+ factory = null;
+ }
+}
+
+int /*long*/ getAddress () {
+ return factory.getAddress ();
+}
+
+int QueryInterface (int /*long*/ riid, int /*long*/ ppvObject) {
+ if (riid == 0 || ppvObject == 0) return XPCOM.NS_ERROR_NO_INTERFACE;
+ nsID guid = new nsID ();
+ XPCOM.memmove (guid, riid, nsID.sizeof);
+
+ if (guid.Equals (nsISupports.NS_ISUPPORTS_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {supports.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsIFactory.NS_IFACTORY_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {factory.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+
+ XPCOM.memmove (ppvObject, new int /*long*/[] {0}, C.PTR_SIZEOF);
+ return XPCOM.NS_ERROR_NO_INTERFACE;
+}
+
+int Release () {
+ refCount--;
+ if (refCount == 0) disposeCOMInterfaces ();
+ return refCount;
+}
+
+/* nsIFactory */
+
+int CreateInstance (int /*long*/ aOuter, int /*long*/ iid, int /*long*/ result) {
+ if (Mozilla.IsPre_1_9) {
+ HelperAppLauncherDialog helperAppLauncherDialog = new HelperAppLauncherDialog ();
+ helperAppLauncherDialog.AddRef ();
+ XPCOM.memmove (result, new int /*long*/[] {helperAppLauncherDialog.getAddress ()}, C.PTR_SIZEOF);
+ } else {
+ HelperAppLauncherDialog_1_9 helperAppLauncherDialog = new HelperAppLauncherDialog_1_9 ();
+ helperAppLauncherDialog.AddRef ();
+ XPCOM.memmove (result, new int /*long*/[] {helperAppLauncherDialog.getAddress ()}, C.PTR_SIZEOF);
+ }
+ return XPCOM.NS_OK;
+}
+
+int LockFactory (int lock) {
+ return XPCOM.NS_OK;
+}
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/HelperAppLauncherDialog_1_9.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/HelperAppLauncherDialog_1_9.java
new file mode 100644
index 0000000000..dd2e0cb89c
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/HelperAppLauncherDialog_1_9.java
@@ -0,0 +1,143 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swt.browser;
+
+import org.eclipse.swt.*;
+import org.eclipse.swt.internal.C;
+import org.eclipse.swt.internal.mozilla.*;
+import org.eclipse.swt.widgets.*;
+
+/**
+ * This class implements the nsIHelperAppLauncherDialog interface for mozilla
+ * versions >= 1.9. For mozilla versions 1.4 - 1.8.x this interface is
+ * implemented by class HelperAppLauncherDialog. HelperAppLauncherDialogFactory
+ * determines at runtime which of these classes to instantiate.
+ */
+class HelperAppLauncherDialog_1_9 {
+ XPCOMObject supports;
+ XPCOMObject helperAppLauncherDialog;
+ int refCount = 0;
+
+HelperAppLauncherDialog_1_9 () {
+ createCOMInterfaces ();
+}
+
+int AddRef () {
+ refCount++;
+ return refCount;
+}
+
+void createCOMInterfaces () {
+ /* Create each of the interfaces that this object implements */
+ supports = new XPCOMObject (new int[] {2, 0, 0}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ };
+
+ helperAppLauncherDialog = new XPCOMObject (new int[] {2, 0, 0, 3, 6}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return Show (args[0], args[1], (int)/*64*/args[2]);}
+ public int /*long*/ method4 (int /*long*/[] args) {return PromptForSaveToFile (args[0], args[1], args[2], args[3], (int)/*64*/args[4], args[5]);}
+ };
+}
+
+void disposeCOMInterfaces () {
+ if (supports != null) {
+ supports.dispose ();
+ supports = null;
+ }
+ if (helperAppLauncherDialog != null) {
+ helperAppLauncherDialog.dispose ();
+ helperAppLauncherDialog = null;
+ }
+}
+
+int /*long*/ getAddress () {
+ return helperAppLauncherDialog.getAddress ();
+}
+
+int QueryInterface (int /*long*/ riid, int /*long*/ ppvObject) {
+ if (riid == 0 || ppvObject == 0) return XPCOM.NS_ERROR_NO_INTERFACE;
+ nsID guid = new nsID ();
+ XPCOM.memmove (guid, riid, nsID.sizeof);
+
+ if (guid.Equals (nsISupports.NS_ISUPPORTS_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {supports.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsIHelperAppLauncherDialog_1_9.NS_IHELPERAPPLAUNCHERDIALOG_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {helperAppLauncherDialog.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+
+ XPCOM.memmove (ppvObject, new int /*long*/[] {0}, C.PTR_SIZEOF);
+ return XPCOM.NS_ERROR_NO_INTERFACE;
+}
+
+int Release () {
+ refCount--;
+ /*
+ * Note. This instance lives as long as the download it is bound to.
+ * Its reference count is expected to go down to 0 when the download
+ * has completed or when it has been cancelled. E.g. when the user
+ * cancels the File Dialog, cancels or closes the Download Dialog
+ * and when the Download Dialog goes away after the download is completed.
+ */
+ if (refCount == 0) disposeCOMInterfaces ();
+ return refCount;
+}
+
+/* nsIHelperAppLauncherDialog */
+
+int Show (int /*long*/ aLauncher, int /*long*/ aContext, int aReason) {
+ nsIHelperAppLauncher_1_9 helperAppLauncher = new nsIHelperAppLauncher_1_9 (aLauncher);
+ return helperAppLauncher.SaveToDisk (0, 0);
+}
+
+int PromptForSaveToFile (int /*long*/ aLauncher, int /*long*/ aWindowContext, int /*long*/ aDefaultFileName, int /*long*/ aSuggestedFileExtension, int aForcePrompt, int /*long*/ _retval) {
+ int length = XPCOM.strlen_PRUnichar (aDefaultFileName);
+ char[] dest = new char[length];
+ XPCOM.memmove (dest, aDefaultFileName, length * 2);
+ String defaultFile = new String (dest);
+
+ length = XPCOM.strlen_PRUnichar (aSuggestedFileExtension);
+ dest = new char[length];
+ XPCOM.memmove (dest, aSuggestedFileExtension, length * 2);
+ String suggestedFileExtension = new String (dest);
+
+ Shell shell = new Shell ();
+ FileDialog fileDialog = new FileDialog (shell, SWT.SAVE);
+ fileDialog.setFileName (defaultFile);
+ fileDialog.setFilterExtensions (new String[] {suggestedFileExtension});
+ String name = fileDialog.open ();
+ shell.close ();
+ if (name == null) {
+ nsIHelperAppLauncher_1_9 launcher = new nsIHelperAppLauncher_1_9 (aLauncher);
+ int rc = launcher.Cancel (XPCOM.NS_BINDING_ABORTED);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ return XPCOM.NS_ERROR_FAILURE;
+ }
+ nsEmbedString path = new nsEmbedString (name);
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = XPCOM.NS_NewLocalFile (path.getAddress (), 1, result);
+ path.dispose ();
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (result[0] == 0) Mozilla.error (XPCOM.NS_ERROR_NULL_POINTER);
+ /* Our own nsIDownload has been registered during the Browser initialization. It will be invoked by Mozilla. */
+ XPCOM.memmove (_retval, result, C.PTR_SIZEOF);
+ return XPCOM.NS_OK;
+}
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/InputStream.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/InputStream.java
new file mode 100644
index 0000000000..3440fbbd0f
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/InputStream.java
@@ -0,0 +1,129 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swt.browser;
+
+import org.eclipse.swt.internal.C;
+import org.eclipse.swt.internal.mozilla.*;
+
+class InputStream {
+ XPCOMObject inputStream;
+ int refCount = 0;
+
+ byte[] buffer;
+ int index = 0;
+
+InputStream (byte[] buffer) {
+ this.buffer = buffer;
+ index = 0;
+ createCOMInterfaces ();
+}
+
+int AddRef () {
+ refCount++;
+ return refCount;
+}
+
+void createCOMInterfaces () {
+ /* Create each of the interfaces that this object implements */
+ inputStream = new XPCOMObject (new int[] {2, 0, 0, 0, 1, 3, 4, 1}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return Close ();}
+ public int /*long*/ method4 (int /*long*/[] args) {return Available (args[0]);}
+ public int /*long*/ method5 (int /*long*/[] args) {return Read (args[0], (int)/*64*/args[1], args[2]);}
+ public int /*long*/ method6 (int /*long*/[] args) {return ReadSegments (args[0], args[1], (int)/*64*/args[2], args[3]);}
+ public int /*long*/ method7 (int /*long*/[] args) {return IsNonBlocking (args[0]);}
+ };
+}
+
+void disposeCOMInterfaces () {
+ if (inputStream != null) {
+ inputStream.dispose ();
+ inputStream = null;
+ }
+}
+
+int /*long*/ getAddress () {
+ return inputStream.getAddress ();
+}
+
+int QueryInterface (int /*long*/ riid, int /*long*/ ppvObject) {
+ if (riid == 0 || ppvObject == 0) return XPCOM.NS_ERROR_NO_INTERFACE;
+ nsID guid = new nsID ();
+ XPCOM.memmove (guid, riid, nsID.sizeof);
+
+ if (guid.Equals (nsISupports.NS_ISUPPORTS_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {inputStream.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsIInputStream.NS_IINPUTSTREAM_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {inputStream.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+ XPCOM.memmove (ppvObject, new int /*long*/[] {0}, C.PTR_SIZEOF);
+ return XPCOM.NS_ERROR_NO_INTERFACE;
+}
+
+int Release () {
+ refCount--;
+ if (refCount == 0) disposeCOMInterfaces ();
+ return refCount;
+}
+
+/* nsIInputStream implementation */
+
+int Close () {
+ buffer = null;
+ index = 0;
+ return XPCOM.NS_OK;
+}
+
+int Available (int /*long*/ _retval) {
+ int available = buffer == null ? 0 : buffer.length - index;
+ XPCOM.memmove (_retval, new int[] {available}, 4);
+ return XPCOM.NS_OK;
+}
+
+int Read(int /*long*/ aBuf, int aCount, int /*long*/ _retval) {
+ int max = Math.min (aCount, buffer == null ? 0 : buffer.length - index);
+ if (max > 0) {
+ byte[] src = new byte[max];
+ System.arraycopy (buffer, index, src, 0, max);
+ XPCOM.memmove (aBuf, src, max);
+ index += max;
+ }
+ XPCOM.memmove(_retval, new int[] {max}, 4);
+ return XPCOM.NS_OK;
+}
+
+int ReadSegments (int /*long*/ aWriter, int /*long*/ aClosure, int aCount, int /*long*/ _retval) {
+ int max = Math.min (aCount, buffer == null ? 0 : buffer.length - index);
+ int cnt = max;
+ while (cnt > 0) {
+ int[] aWriteCount = new int[1];
+ int /*long*/ rc = XPCOM.Call (aWriter, getAddress (), aClosure, buffer, index, cnt, aWriteCount);
+ if (rc != XPCOM.NS_OK) break;
+ index += aWriteCount[0];
+ cnt -= aWriteCount[0];
+ }
+ XPCOM.memmove (_retval, new int[] {max - cnt}, 4);
+ return XPCOM.NS_OK;
+}
+
+int IsNonBlocking (int /*long*/ _retval) {
+ /* blocking */
+ XPCOM.memmove (_retval, new int[] {0}, 4);
+ return XPCOM.NS_OK;
+}
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Mozilla.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Mozilla.java
new file mode 100644
index 0000000000..d9220a1c42
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/Mozilla.java
@@ -0,0 +1,3820 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swt.browser;
+
+import java.io.*;
+import java.lang.reflect.*;
+import java.util.*;
+
+import org.eclipse.swt.*;
+import org.eclipse.swt.widgets.*;
+import org.eclipse.swt.graphics.*;
+import org.eclipse.swt.internal.*;
+import org.eclipse.swt.internal.mozilla.*;
+import org.eclipse.swt.internal.mozilla.init.*;
+import org.eclipse.swt.layout.*;
+
+class Mozilla extends WebBrowser {
+ int /*long*/ embedHandle;
+ nsIWebBrowser webBrowser;
+ Object webBrowserObject;
+ MozillaDelegate delegate;
+
+ /* Interfaces for this Mozilla embedding notification */
+ XPCOMObject supports;
+ XPCOMObject weakReference;
+ XPCOMObject webProgressListener;
+ XPCOMObject webBrowserChrome;
+ XPCOMObject webBrowserChromeFocus;
+ XPCOMObject embeddingSiteWindow;
+ XPCOMObject interfaceRequestor;
+ XPCOMObject supportsWeakReference;
+ XPCOMObject contextMenuListener;
+ XPCOMObject uriContentListener;
+ XPCOMObject tooltipListener;
+ XPCOMObject domEventListener;
+ int chromeFlags = nsIWebBrowserChrome.CHROME_DEFAULT;
+ int registerFunctionsOnState = 0;
+ int refCount, lastKeyCode, lastCharCode, authCount;
+ int /*long*/ request;
+ Point location, size;
+ boolean visible, isChild, ignoreDispose;
+ Shell tip = null;
+ Listener listener;
+ Vector unhookedDOMWindows = new Vector ();
+ String lastNavigateURL;
+ byte[] htmlBytes;
+
+ static nsIAppShell AppShell;
+ static AppFileLocProvider LocationProvider;
+ static WindowCreator2 WindowCreator;
+ static int BrowserCount, NextJSFunctionIndex = 1;
+ static Hashtable AllFunctions = new Hashtable ();
+ static boolean Initialized, IsPre_1_8, IsPre_1_9, PerformedVersionCheck, XPCOMWasGlued, XPCOMInitWasGlued;
+
+ /* XULRunner detect constants */
+ static final String GRERANGE_LOWER = "1.8.1.2"; //$NON-NLS-1$
+ static final String GRERANGE_LOWER_FALLBACK = "1.8"; //$NON-NLS-1$
+ static final boolean LowerRangeInclusive = true;
+ static final String GRERANGE_UPPER = "1.9.*"; //$NON-NLS-1$
+ static final boolean UpperRangeInclusive = true;
+
+ static final int MAX_PORT = 65535;
+ static final String SEPARATOR_OS = System.getProperty ("file.separator"); //$NON-NLS-1$
+ static final String ABOUT_BLANK = "about:blank"; //$NON-NLS-1$
+ static final String DISPOSE_LISTENER_HOOKED = "org.eclipse.swt.browser.Mozilla.disposeListenerHooked"; //$NON-NLS-1$
+ static final String PREFIX_JAVASCRIPT = "javascript:"; //$NON-NLS-1$
+ static final String PREFERENCE_CHARSET = "intl.charset.default"; //$NON-NLS-1$
+ static final String PREFERENCE_DISABLEOPENDURINGLOAD = "dom.disable_open_during_load"; //$NON-NLS-1$
+ static final String PREFERENCE_DISABLEOPENWINDOWSTATUSHIDE = "dom.disable_window_open_feature.status"; //$NON-NLS-1$
+ static final String PREFERENCE_DISABLEWINDOWSTATUSCHANGE = "dom.disable_window_status_change"; //$NON-NLS-1$
+ static final String PREFERENCE_LANGUAGES = "intl.accept_languages"; //$NON-NLS-1$
+ static final String PREFERENCE_PROXYHOST_FTP = "network.proxy.ftp"; //$NON-NLS-1$
+ static final String PREFERENCE_PROXYPORT_FTP = "network.proxy.ftp_port"; //$NON-NLS-1$
+ static final String PREFERENCE_PROXYHOST_HTTP = "network.proxy.http"; //$NON-NLS-1$
+ static final String PREFERENCE_PROXYPORT_HTTP = "network.proxy.http_port"; //$NON-NLS-1$
+ static final String PREFERENCE_PROXYHOST_SSL = "network.proxy.ssl"; //$NON-NLS-1$
+ static final String PREFERENCE_PROXYPORT_SSL = "network.proxy.ssl_port"; //$NON-NLS-1$
+ 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 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$
+ static final String SEPARATOR_LOCALE = "-"; //$NON-NLS-1$
+ static final String SHUTDOWN_PERSIST = "shutdown-persist"; //$NON-NLS-1$
+ static final String STARTUP = "startup"; //$NON-NLS-1$
+ static final String TOKENIZER_LOCALE = ","; //$NON-NLS-1$
+ static final String URI_FROMMEMORY = "file:///"; //$NON-NLS-1$
+ static final String XULRUNNER_PATH = "org.eclipse.swt.browser.XULRunnerPath"; //$NON-NLS-1$
+
+ // TEMPORARY CODE
+ static final String GRE_INITIALIZED = "org.eclipse.swt.browser.XULRunnerInitialized"; //$NON-NLS-1$
+
+ static {
+ MozillaClearSessions = new Runnable () {
+ public void run () {
+ if (!Initialized) return;
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = XPCOM.NS_GetServiceManager (result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+ nsIServiceManager serviceManager = new nsIServiceManager (result[0]);
+ result[0] = 0;
+ byte[] aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_COOKIEMANAGER_CONTRACTID, true);
+ rc = serviceManager.GetServiceByContractID (aContractID, nsICookieManager.NS_ICOOKIEMANAGER_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+ serviceManager.Release ();
+
+ nsICookieManager manager = new nsICookieManager (result[0]);
+ result[0] = 0;
+ rc = manager.GetEnumerator (result);
+ if (rc != XPCOM.NS_OK) error (rc);
+
+ nsISimpleEnumerator enumerator = new nsISimpleEnumerator (result[0]);
+ int[] moreElements = new int[1]; /* PRBool */
+ rc = enumerator.HasMoreElements (moreElements);
+ if (rc != XPCOM.NS_OK) error (rc);
+ while (moreElements[0] != 0) {
+ result[0] = 0;
+ rc = enumerator.GetNext (result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ nsICookie cookie = new nsICookie (result[0]);
+ long[] expires = new long[1];
+ rc = cookie.GetExpires (expires);
+ if (expires[0] == 0) {
+ /* indicates a session cookie */
+ int /*long*/ domain = XPCOM.nsEmbedCString_new ();
+ int /*long*/ name = XPCOM.nsEmbedCString_new ();
+ int /*long*/ path = XPCOM.nsEmbedCString_new ();
+ cookie.GetHost (domain);
+ cookie.GetName (name);
+ cookie.GetPath (path);
+ rc = manager.Remove (domain, name, path, 0);
+ XPCOM.nsEmbedCString_delete (domain);
+ XPCOM.nsEmbedCString_delete (name);
+ XPCOM.nsEmbedCString_delete (path);
+ if (rc != XPCOM.NS_OK) error (rc);
+ }
+ cookie.Release ();
+ rc = enumerator.HasMoreElements (moreElements);
+ if (rc != XPCOM.NS_OK) error (rc);
+ }
+ enumerator.Release ();
+ manager.Release ();
+ }
+ };
+
+ MozillaGetCookie = new Runnable() {
+ public void run() {
+ if (!Initialized) return;
+
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = XPCOM.NS_GetServiceManager (result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+
+ nsIServiceManager serviceManager = new nsIServiceManager (result[0]);
+ result[0] = 0;
+ rc = serviceManager.GetService (XPCOM.NS_IOSERVICE_CID, nsIIOService.NS_IIOSERVICE_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+
+ nsIIOService ioService = new nsIIOService (result[0]);
+ result[0] = 0;
+ byte[] bytes = MozillaDelegate.wcsToMbcs (null, CookieUrl, false);
+ int /*long*/ aSpec = XPCOM.nsEmbedCString_new (bytes, bytes.length);
+ rc = ioService.NewURI (aSpec, null, 0, result);
+ XPCOM.nsEmbedCString_delete (aSpec);
+ ioService.Release ();
+ if (rc != XPCOM.NS_OK) {
+ serviceManager.Release ();
+ return;
+ }
+ if (result[0] == 0) error (XPCOM.NS_ERROR_NULL_POINTER);
+
+ nsIURI aURI = new nsIURI (result[0]);
+ result[0] = 0;
+ byte[] aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_COOKIESERVICE_CONTRACTID, true);
+ rc = serviceManager.GetServiceByContractID (aContractID, nsICookieService.NS_ICOOKIESERVICE_IID, result);
+ int /*long*/ cookieString;
+ if (rc == XPCOM.NS_OK && result[0] != 0) {
+ nsICookieService cookieService = new nsICookieService (result[0]);
+ result[0] = 0;
+ rc = cookieService.GetCookieString (aURI.getAddress(), 0, result);
+ cookieService.Release ();
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) {
+ aURI.Release ();
+ serviceManager.Release ();
+ return;
+ }
+ cookieString = result[0];
+ } else {
+ result[0] = 0;
+ rc = serviceManager.GetServiceByContractID (aContractID, nsICookieService_1_9.NS_ICOOKIESERVICE_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+ nsICookieService_1_9 cookieService = new nsICookieService_1_9 (result[0]);
+ result[0] = 0;
+ rc = cookieService.GetCookieString(aURI.getAddress(), 0, result);
+ cookieService.Release ();
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) {
+ aURI.Release ();
+ serviceManager.Release ();
+ return;
+ }
+ cookieString = result[0];
+ }
+ aURI.Release ();
+ serviceManager.Release ();
+ result[0] = 0;
+
+ int length = C.strlen (cookieString);
+ bytes = new byte[length];
+ XPCOM.memmove (bytes, cookieString, length);
+ C.free (cookieString);
+ String allCookies = new String (MozillaDelegate.mbcsToWcs (null, bytes));
+ StringTokenizer tokenizer = new StringTokenizer (allCookies, ";"); //$NON-NLS-1$
+ while (tokenizer.hasMoreTokens ()) {
+ String cookie = tokenizer.nextToken ();
+ int index = cookie.indexOf ('=');
+ if (index != -1) {
+ String name = cookie.substring (0, index).trim ();
+ if (name.equals (CookieName)) {
+ CookieValue = cookie.substring (index + 1).trim ();
+ return;
+ }
+ }
+ }
+ }
+ };
+
+ MozillaSetCookie = new Runnable() {
+ public void run() {
+ if (!Initialized) return;
+
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = XPCOM.NS_GetServiceManager (result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+
+ nsIServiceManager serviceManager = new nsIServiceManager (result[0]);
+ result[0] = 0;
+ rc = serviceManager.GetService (XPCOM.NS_IOSERVICE_CID, nsIIOService.NS_IIOSERVICE_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+
+ nsIIOService ioService = new nsIIOService (result[0]);
+ result[0] = 0;
+ byte[] bytes = MozillaDelegate.wcsToMbcs (null, CookieUrl, false);
+ int /*long*/ aSpec = XPCOM.nsEmbedCString_new (bytes, bytes.length);
+ rc = ioService.NewURI (aSpec, null, 0, result);
+ XPCOM.nsEmbedCString_delete (aSpec);
+ ioService.Release ();
+ if (rc != XPCOM.NS_OK) {
+ serviceManager.Release ();
+ return;
+ }
+ if (result[0] == 0) error (XPCOM.NS_ERROR_NULL_POINTER);
+
+ nsIURI aURI = new nsIURI(result[0]);
+ result[0] = 0;
+ byte[] aCookie = MozillaDelegate.wcsToMbcs (null, CookieValue, true);
+ byte[] aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_COOKIESERVICE_CONTRACTID, true);
+ rc = serviceManager.GetServiceByContractID (aContractID, nsICookieService.NS_ICOOKIESERVICE_IID, result);
+ if (rc == XPCOM.NS_OK && result[0] != 0) {
+ nsICookieService cookieService = new nsICookieService (result[0]);
+ rc = cookieService.SetCookieString (aURI.getAddress(), 0, aCookie, 0);
+ cookieService.Release ();
+ } else {
+ result[0] = 0;
+ rc = serviceManager.GetServiceByContractID (aContractID, nsICookieService_1_9.NS_ICOOKIESERVICE_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+ nsICookieService_1_9 cookieService = new nsICookieService_1_9 (result[0]);
+ rc = cookieService.SetCookieString(aURI.getAddress(), 0, aCookie, 0);
+ cookieService.Release ();
+ }
+ result[0] = 0;
+ aURI.Release ();
+ serviceManager.Release ();
+ CookieResult = rc == 0;
+ }
+ };
+ }
+
+public void create (Composite parent, int style) {
+ delegate = new MozillaDelegate (browser);
+ final Display display = parent.getDisplay ();
+
+ int /*long*/[] result = new int /*long*/[1];
+ if (!Initialized) {
+ boolean initLoaded = false;
+ boolean IsXULRunner = false;
+
+ String greInitialized = System.getProperty (GRE_INITIALIZED);
+ if ("true".equals (greInitialized)) { //$NON-NLS-1$
+ /*
+ * Another browser has already initialized xulrunner in this process,
+ * so just bind to it instead of trying to initialize a new one.
+ */
+ Initialized = true;
+ }
+
+ String mozillaPath = System.getProperty (XULRUNNER_PATH);
+ /*
+ * Browser clients that ship XULRunner in a plug-in must have an opportunity
+ * to set the org.eclipse.swt.browser.XULRunnerPath system property to point
+ * at their XULRunner before the first Mozilla-based Browser is created. To
+ * facilitate this, reflection is used to reference non-existent class
+ * org.eclipse.swt.browser.XULRunnerInitializer the first time a Mozilla-
+ * based Browser is created. A client wishing to use this hook can do so
+ * by creating a fragment of org.eclipse.swt that implements this class and
+ * sets the system property in its static initializer.
+ */
+ if (mozillaPath == null) {
+ try {
+ Class.forName ("org.eclipse.swt.browser.XULRunnerInitializer"); //$NON-NLS-1$
+ mozillaPath = System.getProperty (XULRUNNER_PATH);
+ } catch (ClassNotFoundException e) {
+ /* no fragment is providing this class, which is the typical case */
+ }
+ }
+
+ if (mozillaPath == null) {
+ try {
+ String libName = delegate.getSWTInitLibraryName ();
+ Library.loadLibrary (libName);
+ initLoaded = true;
+ } catch (UnsatisfiedLinkError e) {
+ /*
+ * If this library failed to load then do not attempt to detect a
+ * xulrunner to use. The Browser may still be usable if MOZILLA_FIVE_HOME
+ * points at a GRE.
+ */
+ }
+ } else {
+ mozillaPath += SEPARATOR_OS + delegate.getLibraryName ();
+ IsXULRunner = true;
+ }
+
+ if (initLoaded) {
+ /* attempt to discover a XULRunner to use as the GRE */
+ GREVersionRange range = new GREVersionRange ();
+ byte[] bytes = MozillaDelegate.wcsToMbcs (null, GRERANGE_LOWER, true);
+ int /*long*/ lower = C.malloc (bytes.length);
+ C.memmove (lower, bytes, bytes.length);
+ range.lower = lower;
+ range.lowerInclusive = LowerRangeInclusive;
+
+ bytes = MozillaDelegate.wcsToMbcs (null, GRERANGE_UPPER, true);
+ int /*long*/ upper = C.malloc (bytes.length);
+ C.memmove (upper, bytes, bytes.length);
+ range.upper = upper;
+ range.upperInclusive = UpperRangeInclusive;
+
+ int length = XPCOMInit.PATH_MAX;
+ int /*long*/ greBuffer = C.malloc (length);
+ int /*long*/ propertiesPtr = C.malloc (2 * C.PTR_SIZEOF);
+ int rc = XPCOMInit.GRE_GetGREPathWithProperties (range, 1, propertiesPtr, 0, greBuffer, length);
+
+ /*
+ * A XULRunner was not found that supports wrapping of XPCOM handles as JavaXPCOM objects.
+ * Drop the lower version bound and try to detect an earlier XULRunner installation.
+ */
+ if (rc != XPCOM.NS_OK) {
+ C.free (lower);
+ bytes = MozillaDelegate.wcsToMbcs (null, GRERANGE_LOWER_FALLBACK, true);
+ lower = C.malloc (bytes.length);
+ C.memmove (lower, bytes, bytes.length);
+ range.lower = lower;
+ rc = XPCOMInit.GRE_GetGREPathWithProperties (range, 1, propertiesPtr, 0, greBuffer, length);
+ }
+
+ C.free (lower);
+ C.free (upper);
+ C.free (propertiesPtr);
+ if (rc == XPCOM.NS_OK) {
+ /* indicates that a XULRunner was found */
+ length = C.strlen (greBuffer);
+ bytes = new byte[length];
+ C.memmove (bytes, greBuffer, length);
+ mozillaPath = new String (MozillaDelegate.mbcsToWcs (null, bytes));
+ IsXULRunner = mozillaPath.length () > 0;
+
+ /*
+ * Test whether the detected XULRunner can be used as the GRE before loading swt's
+ * XULRunner library. If it cannot be used then fall back to attempting to use
+ * the GRE pointed to by MOZILLA_FIVE_HOME.
+ *
+ * One case where this will fail is attempting to use a 64-bit xulrunner while swt
+ * is running in 32-bit mode, or vice versa.
+ */
+ if (IsXULRunner) {
+ byte[] path = MozillaDelegate.wcsToMbcs (null, mozillaPath, true);
+ rc = XPCOMInit.XPCOMGlueStartup (path);
+ if (rc != XPCOM.NS_OK) {
+ mozillaPath = mozillaPath.substring (0, mozillaPath.lastIndexOf (SEPARATOR_OS));
+ if (Device.DEBUG) System.out.println ("cannot use detected XULRunner: " + mozillaPath); //$NON-NLS-1$
+
+ /* attempt to XPCOMGlueStartup the GRE pointed at by MOZILLA_FIVE_HOME */
+ int /*long*/ ptr = C.getenv (MozillaDelegate.wcsToMbcs (null, XPCOM.MOZILLA_FIVE_HOME, true));
+ if (ptr == 0) {
+ IsXULRunner = false;
+ } else {
+ length = C.strlen (ptr);
+ byte[] buffer = new byte[length];
+ C.memmove (buffer, ptr, length);
+ mozillaPath = new String (MozillaDelegate.mbcsToWcs (null, buffer));
+ /*
+ * Attempting to XPCOMGlueStartup a mozilla-based GRE != xulrunner can
+ * crash, so don't attempt unless the GRE appears to be xulrunner.
+ */
+ if (mozillaPath.indexOf("xulrunner") == -1) { //$NON-NLS-1$
+ IsXULRunner = false;
+ } else {
+ mozillaPath += SEPARATOR_OS + delegate.getLibraryName ();
+ path = MozillaDelegate.wcsToMbcs (null, mozillaPath, true);
+ rc = XPCOMInit.XPCOMGlueStartup (path);
+ if (rc != XPCOM.NS_OK) {
+ IsXULRunner = false;
+ mozillaPath = mozillaPath.substring (0, mozillaPath.lastIndexOf (SEPARATOR_OS));
+ if (Device.DEBUG) System.out.println ("failed to start as XULRunner: " + mozillaPath); //$NON-NLS-1$
+ }
+ }
+ }
+ }
+ if (IsXULRunner) {
+ XPCOMInitWasGlued = true;
+ }
+ }
+ }
+ C.free (greBuffer);
+ }
+
+ if (IsXULRunner) {
+ if (Device.DEBUG) System.out.println ("XULRunner path: " + mozillaPath); //$NON-NLS-1$
+ try {
+ Library.loadLibrary ("swt-xulrunner"); //$NON-NLS-1$
+ } catch (UnsatisfiedLinkError e) {
+ SWT.error (SWT.ERROR_NO_HANDLES, e);
+ }
+ byte[] path = MozillaDelegate.wcsToMbcs (null, mozillaPath, true);
+ int rc = XPCOM.XPCOMGlueStartup (path);
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+ XPCOMWasGlued = true;
+
+ /*
+ * Remove the trailing xpcom lib name from mozillaPath because the
+ * Mozilla.initialize and NS_InitXPCOM2 invocations require a directory name only.
+ */
+ mozillaPath = mozillaPath.substring (0, mozillaPath.lastIndexOf (SEPARATOR_OS));
+ } else {
+ if ((style & SWT.MOZILLA) != 0) {
+ browser.dispose ();
+ String errorString = (mozillaPath != null && mozillaPath.length () > 0) ?
+ " [Failed to use detected XULRunner: " + mozillaPath + "]" :
+ " [Could not detect registered XULRunner to use]"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ SWT.error (SWT.ERROR_NO_HANDLES, null, errorString);
+ }
+
+ /* attempt to use the GRE pointed at by MOZILLA_FIVE_HOME */
+ int /*long*/ ptr = C.getenv (MozillaDelegate.wcsToMbcs (null, XPCOM.MOZILLA_FIVE_HOME, true));
+ if (ptr != 0) {
+ int length = C.strlen (ptr);
+ byte[] buffer = new byte[length];
+ C.memmove (buffer, ptr, length);
+ mozillaPath = new String (MozillaDelegate.mbcsToWcs (null, buffer));
+ } else {
+ browser.dispose ();
+ SWT.error (SWT.ERROR_NO_HANDLES, null, " [Unknown Mozilla path (MOZILLA_FIVE_HOME not set)]"); //$NON-NLS-1$
+ }
+ if (Device.DEBUG) System.out.println ("Mozilla path: " + mozillaPath); //$NON-NLS-1$
+
+ /*
+ * Note. Embedding a Mozilla GTK1.2 causes a crash. The workaround
+ * is to check the version of GTK used by Mozilla by looking for
+ * the libwidget_gtk.so library used by Mozilla GTK1.2. Mozilla GTK2
+ * uses the libwidget_gtk2.so library.
+ */
+ if (Compatibility.fileExists (mozillaPath, "components/libwidget_gtk.so")) { //$NON-NLS-1$
+ browser.dispose ();
+ SWT.error (SWT.ERROR_NO_HANDLES, null, " [Mozilla GTK2 required (GTK1.2 detected)]"); //$NON-NLS-1$
+ }
+
+ try {
+ Library.loadLibrary ("swt-mozilla"); //$NON-NLS-1$
+ } catch (UnsatisfiedLinkError e) {
+ try {
+ /*
+ * The initial loadLibrary attempt may have failed as a result of the user's
+ * system not having libstdc++.so.6 installed, so try to load the alternate
+ * swt mozilla library that depends on libswtc++.so.5 instead.
+ */
+ Library.loadLibrary ("swt-mozilla-gcc3"); //$NON-NLS-1$
+ } catch (UnsatisfiedLinkError ex) {
+ browser.dispose ();
+ /*
+ * Print the error from the first failed attempt since at this point it's
+ * known that the failure was not due to the libstdc++.so.6 dependency.
+ */
+ SWT.error (SWT.ERROR_NO_HANDLES, e, " [MOZILLA_FIVE_HOME='" + mozillaPath + "']"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+ }
+
+ if (!Initialized) {
+ LocationProvider = new AppFileLocProvider (mozillaPath);
+ LocationProvider.AddRef ();
+
+ /* extract external.xpt to temp */
+ String tempPath = System.getProperty ("java.io.tmpdir"); //$NON-NLS-1$
+ File componentsDir = new File (tempPath, "eclipse/mozillaComponents"); //$NON-NLS-1$
+ java.io.InputStream is = Library.class.getResourceAsStream ("/external.xpt"); //$NON-NLS-1$
+ if (is != null) {
+ if (!componentsDir.exists ()) {
+ componentsDir.mkdirs ();
+ }
+ int read;
+ byte [] buffer = new byte [4096];
+ File file = new File (componentsDir, "external.xpt"); //$NON-NLS-1$
+ try {
+ FileOutputStream os = new FileOutputStream (file);
+ while ((read = is.read (buffer)) != -1) {
+ os.write(buffer, 0, read);
+ }
+ os.close ();
+ is.close ();
+ } catch (FileNotFoundException e) {
+ } catch (IOException e) {
+ }
+ }
+ if (componentsDir.exists () && componentsDir.isDirectory ()) {
+ LocationProvider.setComponentsPath (componentsDir.getAbsolutePath ());
+ }
+
+ int /*long*/[] retVal = new int /*long*/[1];
+ nsEmbedString pathString = new nsEmbedString (mozillaPath);
+ int rc = XPCOM.NS_NewLocalFile (pathString.getAddress (), 1, retVal);
+ pathString.dispose ();
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+ if (retVal[0] == 0) {
+ browser.dispose ();
+ error (XPCOM.NS_ERROR_NULL_POINTER);
+ }
+
+ nsIFile localFile = new nsILocalFile (retVal[0]);
+ if (IsXULRunner) {
+ int size = XPCOM.nsDynamicFunctionLoad_sizeof ();
+ /* alloc memory for two structs, the second is empty to signify the end of the list */
+ int /*long*/ ptr = C.malloc (size * 2);
+ C.memset (ptr, 0, size * 2);
+ nsDynamicFunctionLoad functionLoad = new nsDynamicFunctionLoad ();
+ byte[] bytes = MozillaDelegate.wcsToMbcs (null, "XRE_InitEmbedding", true); //$NON-NLS-1$
+ functionLoad.functionName = C.malloc (bytes.length);
+ C.memmove (functionLoad.functionName, bytes, bytes.length);
+ functionLoad.function = C.malloc (C.PTR_SIZEOF);
+ C.memmove (functionLoad.function, new int /*long*/[] {0} , C.PTR_SIZEOF);
+ XPCOM.memmove (ptr, functionLoad, XPCOM.nsDynamicFunctionLoad_sizeof ());
+ XPCOM.XPCOMGlueLoadXULFunctions (ptr);
+ C.memmove (result, functionLoad.function, C.PTR_SIZEOF);
+ int /*long*/ functionPtr = result[0];
+ result[0] = 0;
+ C.free (functionLoad.function);
+ C.free (functionLoad.functionName);
+ C.free (ptr);
+ rc = XPCOM.Call (functionPtr, localFile.getAddress (), localFile.getAddress (), LocationProvider.getAddress (), 0, 0);
+ if (rc == XPCOM.NS_OK) {
+ System.setProperty (XULRUNNER_PATH, mozillaPath);
+ }
+ } else {
+ rc = XPCOM.NS_InitXPCOM2 (0, localFile.getAddress(), LocationProvider.getAddress ());
+ }
+ localFile.Release ();
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ SWT.error (SWT.ERROR_NO_HANDLES, null, " [MOZILLA_FIVE_HOME may not point at an embeddable GRE] [NS_InitEmbedding " + mozillaPath + " error " + rc + "]"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ }
+ System.setProperty (GRE_INITIALIZED, "true"); //$NON-NLS-1$
+ }
+
+ /* If JavaXPCOM is detected then attempt to initialize it with the XULRunner being used */
+ if (IsXULRunner) {
+ try {
+ Class clazz = Class.forName ("org.mozilla.xpcom.Mozilla"); //$NON-NLS-1$
+ Method method = clazz.getMethod ("getInstance", new Class[0]); //$NON-NLS-1$
+ Object mozilla = method.invoke (null, new Object[0]);
+ method = clazz.getMethod ("getComponentManager", new Class[0]); //$NON-NLS-1$
+ try {
+ method.invoke (mozilla, new Object[0]);
+ } catch (InvocationTargetException e) {
+ /* indicates that JavaXPCOM has not been initialized yet */
+ Class fileClass = Class.forName ("java.io.File"); //$NON-NLS-1$
+ method = clazz.getMethod ("initialize", new Class[] {fileClass}); //$NON-NLS-1$
+ Constructor constructor = fileClass.getDeclaredConstructor (new Class[] {String.class});
+ Object argument = constructor.newInstance (new Object[] {mozillaPath});
+ method.invoke (mozilla, new Object[] {argument});
+ }
+ } catch (ClassNotFoundException e) {
+ /* JavaXPCOM is not on the classpath */
+ } catch (NoSuchMethodException e) {
+ /* the JavaXPCOM on the classpath does not implement initialize() */
+ } catch (IllegalArgumentException e) {
+ } catch (IllegalAccessException e) {
+ } catch (InvocationTargetException e) {
+ } catch (InstantiationException e) {
+ }
+ }
+
+ int rc = XPCOM.NS_GetComponentManager (result);
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+ if (result[0] == 0) {
+ browser.dispose ();
+ error (XPCOM.NS_NOINTERFACE);
+ }
+
+ nsIComponentManager componentManager = new nsIComponentManager (result[0]);
+ result[0] = 0;
+ if (delegate.needsSpinup ()) {
+ /* nsIAppShell is discontinued as of xulrunner 1.9, so do not fail if it is not found */
+ rc = componentManager.CreateInstance (XPCOM.NS_APPSHELL_CID, 0, nsIAppShell.NS_IAPPSHELL_IID, result);
+ if (rc != XPCOM.NS_ERROR_NO_INTERFACE) {
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+ if (result[0] == 0) {
+ browser.dispose ();
+ error (XPCOM.NS_NOINTERFACE);
+ }
+
+ AppShell = new nsIAppShell (result[0]);
+ rc = AppShell.Create (0, null);
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+ rc = AppShell.Spinup ();
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+ }
+ result[0] = 0;
+ }
+
+ WindowCreator = new WindowCreator2 ();
+ WindowCreator.AddRef ();
+
+ rc = XPCOM.NS_GetServiceManager (result);
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+ if (result[0] == 0) {
+ browser.dispose ();
+ error (XPCOM.NS_NOINTERFACE);
+ }
+
+ nsIServiceManager serviceManager = new nsIServiceManager (result[0]);
+ result[0] = 0;
+ byte[] aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_WINDOWWATCHER_CONTRACTID, true);
+ rc = serviceManager.GetServiceByContractID (aContractID, nsIWindowWatcher.NS_IWINDOWWATCHER_IID, result);
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+ if (result[0] == 0) {
+ browser.dispose ();
+ error (XPCOM.NS_NOINTERFACE);
+ }
+
+ nsIWindowWatcher windowWatcher = new nsIWindowWatcher (result[0]);
+ result[0] = 0;
+ rc = windowWatcher.SetWindowCreator (WindowCreator.getAddress());
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+ windowWatcher.Release ();
+
+ /* compute the profile directory and set it on the AppFileLocProvider */
+ if (LocationProvider != null) {
+ byte[] buffer = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_DIRECTORYSERVICE_CONTRACTID, true);
+ rc = serviceManager.GetServiceByContractID (buffer, nsIDirectoryService.NS_IDIRECTORYSERVICE_IID, result);
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+ if (result[0] == 0) {
+ browser.dispose ();
+ error (XPCOM.NS_NOINTERFACE);
+ }
+
+ nsIDirectoryService directoryService = new nsIDirectoryService (result[0]);
+ result[0] = 0;
+ rc = directoryService.QueryInterface (nsIProperties.NS_IPROPERTIES_IID, result);
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+ if (result[0] == 0) {
+ browser.dispose ();
+ error (XPCOM.NS_NOINTERFACE);
+ }
+ directoryService.Release ();
+
+ nsIProperties properties = new nsIProperties (result[0]);
+ result[0] = 0;
+ buffer = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_APP_APPLICATION_REGISTRY_DIR, true);
+ rc = properties.Get (buffer, nsIFile.NS_IFILE_IID, result);
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+ if (result[0] == 0) {
+ browser.dispose ();
+ error (XPCOM.NS_NOINTERFACE);
+ }
+ properties.Release ();
+
+ nsIFile profileDir = new nsIFile (result[0]);
+ result[0] = 0;
+ int /*long*/ path = XPCOM.nsEmbedCString_new ();
+ rc = profileDir.GetNativePath (path);
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+ int length = XPCOM.nsEmbedCString_Length (path);
+ int /*long*/ ptr = XPCOM.nsEmbedCString_get (path);
+ buffer = new byte [length];
+ XPCOM.memmove (buffer, ptr, length);
+ String profilePath = new String (MozillaDelegate.mbcsToWcs (null, buffer)) + PROFILE_DIR;
+ LocationProvider.setProfilePath (profilePath);
+ LocationProvider.isXULRunner = IsXULRunner;
+ XPCOM.nsEmbedCString_delete (path);
+ profileDir.Release ();
+
+ /* notify observers of a new profile directory being used */
+ buffer = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_OBSERVER_CONTRACTID, true);
+ rc = serviceManager.GetServiceByContractID (buffer, nsIObserverService.NS_IOBSERVERSERVICE_IID, result);
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+ if (result[0] == 0) {
+ browser.dispose ();
+ error (XPCOM.NS_NOINTERFACE);
+ }
+
+ nsIObserverService observerService = new nsIObserverService (result[0]);
+ result[0] = 0;
+ buffer = MozillaDelegate.wcsToMbcs (null, PROFILE_DO_CHANGE, true);
+ length = STARTUP.length ();
+ char[] chars = new char [length + 1];
+ STARTUP.getChars (0, length, chars, 0);
+ rc = observerService.NotifyObservers (0, buffer, chars);
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+ buffer = MozillaDelegate.wcsToMbcs (null, PROFILE_AFTER_CHANGE, true);
+ rc = observerService.NotifyObservers (0, buffer, chars);
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+ observerService.Release ();
+ }
+
+ /*
+ * As a result of using a common profile the user cannot change their locale
+ * and charset. The fix for this is to set mozilla's locale and charset
+ * preference values according to the user's current locale and charset.
+ */
+ aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_PREFSERVICE_CONTRACTID, true);
+ rc = serviceManager.GetServiceByContractID (aContractID, nsIPrefService.NS_IPREFSERVICE_IID, result);
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+ if (result[0] == 0) {
+ browser.dispose ();
+ error (XPCOM.NS_NOINTERFACE);
+ }
+
+ nsIPrefService prefService = new nsIPrefService (result[0]);
+ result[0] = 0;
+ byte[] buffer = new byte[1];
+ rc = prefService.GetBranch (buffer, result); /* empty buffer denotes root preference level */
+ prefService.Release ();
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+ if (result[0] == 0) {
+ browser.dispose ();
+ error (XPCOM.NS_NOINTERFACE);
+ }
+
+ nsIPrefBranch prefBranch = new nsIPrefBranch (result[0]);
+ result[0] = 0;
+
+ /* get Mozilla's current locale preference value */
+ String prefLocales = null;
+ nsIPrefLocalizedString localizedString = null;
+ buffer = MozillaDelegate.wcsToMbcs (null, PREFERENCE_LANGUAGES, true);
+ rc = prefBranch.GetComplexValue (buffer, nsIPrefLocalizedString.NS_IPREFLOCALIZEDSTRING_IID, result);
+ /*
+ * Feature of Debian. For some reason attempting to query for the current locale
+ * preference fails on Debian. The workaround for this is to assume a value of
+ * "en-us,en" since this is typically the default value when mozilla is used without
+ * a profile.
+ */
+ if (rc != XPCOM.NS_OK) {
+ prefLocales = "en-us,en" + TOKENIZER_LOCALE; //$NON-NLS-1$
+ } else {
+ if (result[0] == 0) {
+ browser.dispose ();
+ error (XPCOM.NS_NOINTERFACE);
+ }
+ localizedString = new nsIPrefLocalizedString (result[0]);
+ result[0] = 0;
+ rc = localizedString.ToString (result);
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+ if (result[0] == 0) {
+ browser.dispose ();
+ error (XPCOM.NS_NOINTERFACE);
+ }
+ int length = XPCOM.strlen_PRUnichar (result[0]);
+ char[] dest = new char[length];
+ XPCOM.memmove (dest, result[0], length * 2);
+ prefLocales = new String (dest) + TOKENIZER_LOCALE;
+ }
+ result[0] = 0;
+
+ /*
+ * construct the new locale preference value by prepending the
+ * user's current locale and language to the original value
+ */
+ Locale locale = Locale.getDefault ();
+ String language = locale.getLanguage ();
+ String country = locale.getCountry ();
+ StringBuffer stringBuffer = new StringBuffer (language);
+ stringBuffer.append (SEPARATOR_LOCALE);
+ stringBuffer.append (country.toLowerCase ());
+ stringBuffer.append (TOKENIZER_LOCALE);
+ stringBuffer.append (language);
+ stringBuffer.append (TOKENIZER_LOCALE);
+ String newLocales = stringBuffer.toString ();
+
+ int start, end = -1;
+ do {
+ start = end + 1;
+ end = prefLocales.indexOf (TOKENIZER_LOCALE, start);
+ String token;
+ if (end == -1) {
+ token = prefLocales.substring (start);
+ } else {
+ token = prefLocales.substring (start, end);
+ }
+ if (token.length () > 0) {
+ token = (token + TOKENIZER_LOCALE).trim ();
+ /* ensure that duplicate locale values are not added */
+ if (newLocales.indexOf (token) == -1) {
+ stringBuffer.append (token);
+ }
+ }
+ } while (end != -1);
+ newLocales = stringBuffer.toString ();
+ if (!newLocales.equals (prefLocales)) {
+ /* write the new locale value */
+ newLocales = newLocales.substring (0, newLocales.length () - TOKENIZER_LOCALE.length ()); /* remove trailing tokenizer */
+ int length = newLocales.length ();
+ char[] charBuffer = new char[length + 1];
+ newLocales.getChars (0, length, charBuffer, 0);
+ if (localizedString == null) {
+ byte[] contractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_PREFLOCALIZEDSTRING_CONTRACTID, true);
+ rc = componentManager.CreateInstanceByContractID (contractID, 0, nsIPrefLocalizedString.NS_IPREFLOCALIZEDSTRING_IID, result);
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+ if (result[0] == 0) {
+ browser.dispose ();
+ error (XPCOM.NS_NOINTERFACE);
+ }
+ localizedString = new nsIPrefLocalizedString (result[0]);
+ result[0] = 0;
+ }
+ localizedString.SetDataWithLength (length, charBuffer);
+ rc = prefBranch.SetComplexValue (buffer, nsIPrefLocalizedString.NS_IPREFLOCALIZEDSTRING_IID, localizedString.getAddress());
+ }
+ if (localizedString != null) {
+ localizedString.Release ();
+ localizedString = null;
+ }
+
+ /* get Mozilla's current charset preference value */
+ String prefCharset = null;
+ buffer = MozillaDelegate.wcsToMbcs (null, PREFERENCE_CHARSET, true);
+ rc = prefBranch.GetComplexValue (buffer, nsIPrefLocalizedString.NS_IPREFLOCALIZEDSTRING_IID, result);
+ /*
+ * Feature of Debian. For some reason attempting to query for the current charset
+ * preference fails on Debian. The workaround for this is to assume a value of
+ * "ISO-8859-1" since this is typically the default value when mozilla is used
+ * without a profile.
+ */
+ if (rc != XPCOM.NS_OK) {
+ prefCharset = "ISO-8859-1"; //$NON_NLS-1$
+ } else {
+ if (result[0] == 0) {
+ browser.dispose ();
+ error (XPCOM.NS_NOINTERFACE);
+ }
+ localizedString = new nsIPrefLocalizedString (result[0]);
+ result[0] = 0;
+ rc = localizedString.ToString (result);
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+ if (result[0] == 0) {
+ browser.dispose ();
+ error (XPCOM.NS_NOINTERFACE);
+ }
+ int length = XPCOM.strlen_PRUnichar (result[0]);
+ char[] dest = new char[length];
+ XPCOM.memmove (dest, result[0], length * 2);
+ prefCharset = new String (dest);
+ }
+ result[0] = 0;
+
+ String newCharset = System.getProperty ("file.encoding"); // $NON-NLS-1$
+ if (!newCharset.equals (prefCharset)) {
+ /* write the new charset value */
+ int length = newCharset.length ();
+ char[] charBuffer = new char[length + 1];
+ newCharset.getChars (0, length, charBuffer, 0);
+ if (localizedString == null) {
+ byte[] contractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_PREFLOCALIZEDSTRING_CONTRACTID, true);
+ rc = componentManager.CreateInstanceByContractID (contractID, 0, nsIPrefLocalizedString.NS_IPREFLOCALIZEDSTRING_IID, result);
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+ if (result[0] == 0) {
+ browser.dispose ();
+ error (XPCOM.NS_NOINTERFACE);
+ }
+ localizedString = new nsIPrefLocalizedString (result[0]);
+ result[0] = 0;
+ }
+ localizedString.SetDataWithLength (length, charBuffer);
+ rc = prefBranch.SetComplexValue (buffer, nsIPrefLocalizedString.NS_IPREFLOCALIZEDSTRING_IID, localizedString.getAddress ());
+ }
+ if (localizedString != null) localizedString.Release ();
+
+ /*
+ * Check for proxy values set as documented java properties and update mozilla's
+ * preferences with these values if needed.
+ */
+ String proxyHost = System.getProperty (PROPERTY_PROXYHOST);
+ String proxyPortString = System.getProperty (PROPERTY_PROXYPORT);
+
+ int port = -1;
+ if (proxyPortString != null) {
+ try {
+ int value = Integer.valueOf (proxyPortString).intValue ();
+ if (0 <= value && value <= MAX_PORT) port = value;
+ } catch (NumberFormatException e) {
+ /* do nothing, java property has non-integer value */
+ }
+ }
+
+ if (proxyHost != null) {
+ byte[] contractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_PREFLOCALIZEDSTRING_CONTRACTID, true);
+ rc = componentManager.CreateInstanceByContractID (contractID, 0, nsIPrefLocalizedString.NS_IPREFLOCALIZEDSTRING_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+
+ localizedString = new nsIPrefLocalizedString (result[0]);
+ result[0] = 0;
+ int length = proxyHost.length ();
+ char[] charBuffer = new char[length + 1];
+ proxyHost.getChars (0, length, charBuffer, 0);
+ rc = localizedString.SetDataWithLength (length, charBuffer);
+ if (rc != XPCOM.NS_OK) error (rc);
+ buffer = MozillaDelegate.wcsToMbcs (null, PREFERENCE_PROXYHOST_FTP, true);
+ rc = prefBranch.SetComplexValue (buffer, nsIPrefLocalizedString.NS_IPREFLOCALIZEDSTRING_IID, localizedString.getAddress ());
+ if (rc != XPCOM.NS_OK) error (rc);
+ buffer = MozillaDelegate.wcsToMbcs (null, PREFERENCE_PROXYHOST_HTTP, true);
+ rc = prefBranch.SetComplexValue (buffer, nsIPrefLocalizedString.NS_IPREFLOCALIZEDSTRING_IID, localizedString.getAddress ());
+ if (rc != XPCOM.NS_OK) error (rc);
+ buffer = MozillaDelegate.wcsToMbcs (null, PREFERENCE_PROXYHOST_SSL, true);
+ rc = prefBranch.SetComplexValue (buffer, nsIPrefLocalizedString.NS_IPREFLOCALIZEDSTRING_IID, localizedString.getAddress ());
+ if (rc != XPCOM.NS_OK) error (rc);
+ localizedString.Release ();
+ }
+
+ if (port != -1) {
+ buffer = MozillaDelegate.wcsToMbcs (null, PREFERENCE_PROXYPORT_FTP, true);
+ rc = prefBranch.SetIntPref (buffer, port);
+ if (rc != XPCOM.NS_OK) error (rc);
+ buffer = MozillaDelegate.wcsToMbcs (null, PREFERENCE_PROXYPORT_HTTP, true);
+ rc = prefBranch.SetIntPref (buffer, port);
+ if (rc != XPCOM.NS_OK) error (rc);
+ buffer = MozillaDelegate.wcsToMbcs (null, PREFERENCE_PROXYPORT_SSL, true);
+ rc = prefBranch.SetIntPref (buffer, port);
+ if (rc != XPCOM.NS_OK) error (rc);
+ }
+
+ if (proxyHost != null || port != -1) {
+ buffer = MozillaDelegate.wcsToMbcs (null, PREFERENCE_PROXYTYPE, true);
+ rc = prefBranch.SetIntPref (buffer, 1);
+ if (rc != XPCOM.NS_OK) error (rc);
+ }
+
+ /*
+ * Ensure that windows that are shown during page loads are not blocked. Firefox may
+ * try to block these by default since such windows are often unwelcome, but this
+ * assumption should not be made in the Browser's context. Since the Browser client
+ * is responsible for creating the new Browser and Shell in an OpenWindowListener,
+ * they should decide whether the new window is unwelcome or not and act accordingly.
+ */
+ buffer = MozillaDelegate.wcsToMbcs (null, PREFERENCE_DISABLEOPENDURINGLOAD, true);
+ rc = prefBranch.SetBoolPref (buffer, 0);
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+
+ /* Ensure that the status text can be set through means like javascript */
+ buffer = MozillaDelegate.wcsToMbcs (null, PREFERENCE_DISABLEWINDOWSTATUSCHANGE, true);
+ rc = prefBranch.SetBoolPref (buffer, 0);
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+
+ /* Ensure that the status line can be hidden when opening a window from javascript */
+ buffer = MozillaDelegate.wcsToMbcs (null, PREFERENCE_DISABLEOPENWINDOWSTATUSHIDE, true);
+ rc = prefBranch.SetBoolPref (buffer, 0);
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+
+ prefBranch.Release ();
+
+ PromptService2Factory factory = new PromptService2Factory ();
+ factory.AddRef ();
+
+ rc = componentManager.QueryInterface (nsIComponentRegistrar.NS_ICOMPONENTREGISTRAR_IID, result);
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+ if (result[0] == 0) {
+ browser.dispose ();
+ error (XPCOM.NS_NOINTERFACE);
+ }
+
+ nsIComponentRegistrar componentRegistrar = new nsIComponentRegistrar (result[0]);
+ result[0] = 0;
+ componentRegistrar.AutoRegister (0); /* detect the External component */
+
+ aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_PROMPTSERVICE_CONTRACTID, true);
+ byte[] aClassName = MozillaDelegate.wcsToMbcs (null, "Prompt Service", true); //$NON-NLS-1$
+ rc = componentRegistrar.RegisterFactory (XPCOM.NS_PROMPTSERVICE_CID, aClassName, aContractID, factory.getAddress ());
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+ factory.Release ();
+
+ ExternalFactory externalFactory = new ExternalFactory ();
+ externalFactory.AddRef ();
+ aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.EXTERNAL_CONTRACTID, true);
+ aClassName = MozillaDelegate.wcsToMbcs (null, "External", true); //$NON-NLS-1$
+ rc = componentRegistrar.RegisterFactory (XPCOM.EXTERNAL_CID, aClassName, aContractID, externalFactory.getAddress ());
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+ externalFactory.Release ();
+
+ rc = serviceManager.GetService (XPCOM.NS_CATEGORYMANAGER_CID, nsICategoryManager.NS_ICATEGORYMANAGER_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+ serviceManager.Release ();
+
+ nsICategoryManager categoryManager = new nsICategoryManager (result[0]);
+ result[0] = 0;
+ byte[] category = MozillaDelegate.wcsToMbcs (null, "JavaScript global property", true); //$NON-NLS-1$
+ byte[] entry = MozillaDelegate.wcsToMbcs (null, "external", true); //$NON-NLS-1$
+ rc = categoryManager.AddCategoryEntry(category, entry, aContractID, 1, 1, result);
+ result[0] = 0;
+ categoryManager.Release ();
+
+ /*
+ * This Download factory will be used if the GRE version is < 1.8.
+ * If the GRE version is 1.8.x then the Download factory that is registered later for
+ * contract "Transfer" will be used.
+ * If the GRE version is >= 1.9 then no Download factory is registered because this
+ * functionality is provided by the GRE.
+ */
+ DownloadFactory downloadFactory = new DownloadFactory ();
+ downloadFactory.AddRef ();
+ aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_DOWNLOAD_CONTRACTID, true);
+ aClassName = MozillaDelegate.wcsToMbcs (null, "Download", true); //$NON-NLS-1$
+ rc = componentRegistrar.RegisterFactory (XPCOM.NS_DOWNLOAD_CID, aClassName, aContractID, downloadFactory.getAddress ());
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+ downloadFactory.Release ();
+
+ FilePickerFactory pickerFactory = IsXULRunner ? new FilePickerFactory_1_8 () : new FilePickerFactory ();
+ pickerFactory.AddRef ();
+ aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_FILEPICKER_CONTRACTID, true);
+ aClassName = MozillaDelegate.wcsToMbcs (null, "FilePicker", true); //$NON-NLS-1$
+ rc = componentRegistrar.RegisterFactory (XPCOM.NS_FILEPICKER_CID, aClassName, aContractID, pickerFactory.getAddress ());
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+ pickerFactory.Release ();
+
+ componentRegistrar.Release ();
+ componentManager.Release ();
+
+ Initialized = true;
+ }
+
+ if (display.getData (DISPOSE_LISTENER_HOOKED) == null) {
+ display.setData (DISPOSE_LISTENER_HOOKED, DISPOSE_LISTENER_HOOKED);
+ display.addListener (SWT.Dispose, new Listener () {
+ public void handleEvent (Event event) {
+ if (BrowserCount > 0) return; /* another display is still active */
+
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = XPCOM.NS_GetServiceManager (result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+
+ nsIServiceManager serviceManager = new nsIServiceManager (result[0]);
+ result[0] = 0;
+ byte[] buffer = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_OBSERVER_CONTRACTID, true);
+ rc = serviceManager.GetServiceByContractID (buffer, nsIObserverService.NS_IOBSERVERSERVICE_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+
+ nsIObserverService observerService = new nsIObserverService (result[0]);
+ result[0] = 0;
+ buffer = MozillaDelegate.wcsToMbcs (null, PROFILE_BEFORE_CHANGE, true);
+ int length = SHUTDOWN_PERSIST.length ();
+ char[] chars = new char [length + 1];
+ SHUTDOWN_PERSIST.getChars (0, length, chars, 0);
+ rc = observerService.NotifyObservers (0, buffer, chars);
+ if (rc != XPCOM.NS_OK) error (rc);
+ observerService.Release ();
+
+ if (LocationProvider != null) {
+ String prefsLocation = LocationProvider.profilePath + AppFileLocProvider.PREFERENCES_FILE;
+ nsEmbedString pathString = new nsEmbedString (prefsLocation);
+ rc = XPCOM.NS_NewLocalFile (pathString.getAddress (), 1, result);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (result[0] == 0) Mozilla.error (XPCOM.NS_ERROR_NULL_POINTER);
+ pathString.dispose ();
+
+ nsILocalFile localFile = new nsILocalFile (result [0]);
+ result[0] = 0;
+ rc = localFile.QueryInterface (nsIFile.NS_IFILE_IID, result);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (result[0] == 0) Mozilla.error (XPCOM.NS_ERROR_NO_INTERFACE);
+ localFile.Release ();
+
+ nsIFile prefFile = new nsIFile (result[0]);
+ result[0] = 0;
+
+ buffer = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_PREFSERVICE_CONTRACTID, true);
+ rc = serviceManager.GetServiceByContractID (buffer, nsIPrefService.NS_IPREFSERVICE_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+
+ nsIPrefService prefService = new nsIPrefService (result[0]);
+ result[0] = 0;
+ rc = prefService.SavePrefFile(prefFile.getAddress ());
+ prefService.Release ();
+ prefFile.Release ();
+ }
+ serviceManager.Release ();
+
+ if (XPCOMWasGlued) {
+ /*
+ * XULRunner 1.9 can crash on Windows if XPCOMGlueShutdown is invoked here,
+ * presumably because one or more of its unloaded symbols are referenced when
+ * this callback returns. The workaround is to delay invoking XPCOMGlueShutdown
+ * so that its symbols are still available once this callback returns.
+ */
+ display.asyncExec (new Runnable () {
+ public void run () {
+ XPCOM.XPCOMGlueShutdown ();
+ }
+ });
+
+ // the following is intentionally commented, because calling XRE_TermEmbedding
+ // causes subsequent browser instantiations within the process to fail
+
+// int size = XPCOM.nsDynamicFunctionLoad_sizeof ();
+// /* alloc memory for two structs, the second is empty to signify the end of the list */
+// int /*long*/ ptr = C.malloc (size * 2);
+// C.memset (ptr, 0, size * 2);
+// nsDynamicFunctionLoad functionLoad = new nsDynamicFunctionLoad ();
+// byte[] bytes = MozillaDelegate.wcsToMbcs (null, "XRE_TermEmbedding", true); //$NON-NLS-1$
+// functionLoad.functionName = C.malloc (bytes.length);
+// C.memmove (functionLoad.functionName, bytes, bytes.length);
+// functionLoad.function = C.malloc (C.PTR_SIZEOF);
+// C.memmove (functionLoad.function, new int /*long*/[] {0} , C.PTR_SIZEOF);
+// XPCOM.memmove (ptr, functionLoad, XPCOM.nsDynamicFunctionLoad_sizeof ());
+// XPCOM.XPCOMGlueLoadXULFunctions (ptr);
+// C.memmove (result, functionLoad.function, C.PTR_SIZEOF);
+// int /*long*/ functionPtr = result[0];
+// result[0] = 0;
+// C.free (functionLoad.function);
+// C.free (functionLoad.functionName);
+// C.free (ptr);
+// XPCOM.Call (functionPtr);
+
+ XPCOMWasGlued = false;
+ }
+ if (XPCOMInitWasGlued) {
+ XPCOMInit.XPCOMGlueShutdown ();
+ XPCOMInitWasGlued = false;
+ }
+ Initialized = false;
+ }
+ });
+ }
+
+ BrowserCount++;
+ int rc = XPCOM.NS_GetComponentManager (result);
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+ if (result[0] == 0) {
+ browser.dispose ();
+ error (XPCOM.NS_NOINTERFACE);
+ }
+
+ nsIComponentManager componentManager = new nsIComponentManager (result[0]);
+ result[0] = 0;
+ nsID NS_IWEBBROWSER_CID = new nsID ("F1EAC761-87E9-11d3-AF80-00A024FFC08C"); //$NON-NLS-1$
+ rc = componentManager.CreateInstance (NS_IWEBBROWSER_CID, 0, nsIWebBrowser.NS_IWEBBROWSER_IID, result);
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+ if (result[0] == 0) {
+ browser.dispose ();
+ error (XPCOM.NS_NOINTERFACE);
+ }
+
+ webBrowser = new nsIWebBrowser (result[0]);
+ result[0] = 0;
+
+ createCOMInterfaces ();
+ AddRef ();
+
+ rc = webBrowser.SetContainerWindow (webBrowserChrome.getAddress());
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+
+ rc = webBrowser.QueryInterface (nsIBaseWindow.NS_IBASEWINDOW_IID, result);
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+ if (result[0] == 0) {
+ browser.dispose ();
+ error (XPCOM.NS_ERROR_NO_INTERFACE);
+ }
+
+ nsIBaseWindow baseWindow = new nsIBaseWindow (result[0]);
+ result[0] = 0;
+ Rectangle rect = browser.getClientArea ();
+ if (rect.isEmpty ()) {
+ rect.width = 1;
+ rect.height = 1;
+ }
+
+ embedHandle = delegate.getHandle ();
+
+ rc = baseWindow.InitWindow (embedHandle, 0, 0, 0, rect.width, rect.height);
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (XPCOM.NS_ERROR_FAILURE);
+ }
+ rc = delegate.createBaseWindow (baseWindow);
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (XPCOM.NS_ERROR_FAILURE);
+ }
+ rc = baseWindow.SetVisibility (1);
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (XPCOM.NS_ERROR_FAILURE);
+ }
+ baseWindow.Release ();
+
+ if (!PerformedVersionCheck) {
+ PerformedVersionCheck = true;
+
+ rc = componentManager.QueryInterface (nsIComponentRegistrar.NS_ICOMPONENTREGISTRAR_IID, result);
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+ if (result[0] == 0) {
+ browser.dispose ();
+ error (XPCOM.NS_NOINTERFACE);
+ }
+ nsIComponentRegistrar componentRegistrar = new nsIComponentRegistrar (result[0]);
+ result[0] = 0;
+
+ HelperAppLauncherDialogFactory dialogFactory = new HelperAppLauncherDialogFactory ();
+ dialogFactory.AddRef ();
+ byte[] aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_HELPERAPPLAUNCHERDIALOG_CONTRACTID, true);
+ byte[] aClassName = MozillaDelegate.wcsToMbcs (null, "Helper App Launcher Dialog", true); //$NON-NLS-1$
+ rc = componentRegistrar.RegisterFactory (XPCOM.NS_HELPERAPPLAUNCHERDIALOG_CID, aClassName, aContractID, dialogFactory.getAddress ());
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+ dialogFactory.Release ();
+
+ /*
+ * Check for the availability of the pre-1.8 implementation of nsIDocShell
+ * to determine if the GRE's version is < 1.8.
+ */
+ rc = webBrowser.QueryInterface (nsIInterfaceRequestor.NS_IINTERFACEREQUESTOR_IID, result);
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (XPCOM.NS_ERROR_FAILURE);
+ }
+ if (result[0] == 0) {
+ browser.dispose ();
+ error (XPCOM.NS_ERROR_NO_INTERFACE);
+ }
+ nsIInterfaceRequestor interfaceRequestor = new nsIInterfaceRequestor (result[0]);
+ result[0] = 0;
+
+ rc = interfaceRequestor.GetInterface (nsIDocShell.NS_IDOCSHELL_IID, result);
+ if (rc == XPCOM.NS_OK && result[0] != 0) {
+ IsPre_1_8 = true;
+ new nsISupports (result[0]).Release ();
+ }
+ result[0] = 0;
+ IsPre_1_9 = true;
+
+ /*
+ * A Download factory for contract "Transfer" must be registered iff the GRE's version is 1.8.x.
+ * Check for the availability of the 1.8 implementation of nsIDocShell to determine if the
+ * GRE's version is 1.8.x.
+ * If the GRE version is < 1.8 then the previously-registered Download factory for contract
+ * "Download" will be used.
+ * If the GRE version is >= 1.9 then no Download factory is registered because this
+ * functionality is provided by the GRE.
+ */
+ if (!IsPre_1_8) {
+ rc = interfaceRequestor.GetInterface (nsIDocShell_1_8.NS_IDOCSHELL_IID, result);
+ if (rc == XPCOM.NS_OK && result[0] != 0) { /* 1.8 */
+ new nsISupports (result[0]).Release ();
+ result[0] = 0;
+
+ DownloadFactory_1_8 downloadFactory_1_8 = new DownloadFactory_1_8 ();
+ downloadFactory_1_8.AddRef ();
+ aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_TRANSFER_CONTRACTID, true);
+ aClassName = MozillaDelegate.wcsToMbcs (null, "Transfer", true); //$NON-NLS-1$
+ rc = componentRegistrar.RegisterFactory (XPCOM.NS_DOWNLOAD_CID, aClassName, aContractID, downloadFactory_1_8.getAddress ());
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+ downloadFactory_1_8.Release ();
+ } else { /* >= 1.9 */
+ IsPre_1_9 = false;
+ }
+ }
+ result[0] = 0;
+ interfaceRequestor.Release ();
+ componentRegistrar.Release ();
+ }
+ componentManager.Release ();
+
+ /*
+ * Bug in XULRunner 1.9. On win32, Mozilla does not clear its background before content has
+ * been set into it. As a result, embedders appear broken if they do not immediately display
+ * a URL or text. The Mozilla bug for this is https://bugzilla.mozilla.org/show_bug.cgi?id=453523.
+ *
+ * The workaround is to subclass the Mozilla window and clear it whenever WM_ERASEBKGND is received.
+ * This subclass should be removed once content has been set into the browser.
+ */
+ if (!IsPre_1_9) {
+ delegate.addWindowSubclass ();
+ }
+
+ rc = webBrowser.AddWebBrowserListener (weakReference.getAddress (), nsIWebProgressListener.NS_IWEBPROGRESSLISTENER_IID);
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+
+ rc = webBrowser.SetParentURIContentListener (uriContentListener.getAddress ());
+ if (rc != XPCOM.NS_OK) {
+ browser.dispose ();
+ error (rc);
+ }
+
+ delegate.init ();
+
+ listener = new Listener () {
+ public void handleEvent (Event event) {
+ switch (event.type) {
+ case SWT.Dispose: {
+ /* make this handler run after other dispose listeners */
+ if (ignoreDispose) {
+ ignoreDispose = false;
+ break;
+ }
+ ignoreDispose = true;
+ browser.notifyListeners (event.type, event);
+ event.type = SWT.NONE;
+ onDispose (event.display);
+ break;
+ }
+ case SWT.Resize: onResize (); break;
+ case SWT.FocusIn: Activate (); break;
+ case SWT.Activate: Activate (); break;
+ case SWT.Deactivate: {
+ Display display = event.display;
+ if (Mozilla.this.browser == display.getFocusControl ()) Deactivate ();
+ break;
+ }
+ case SWT.Show: {
+ /*
+ * Feature in GTK Mozilla. Mozilla does not show up when
+ * its container (a GTK fixed handle) is made visible
+ * after having been hidden. The workaround is to reset
+ * its size after the container has been made visible.
+ */
+ Display display = event.display;
+ display.asyncExec(new Runnable () {
+ public void run() {
+ if (browser.isDisposed ()) return;
+ onResize ();
+ }
+ });
+ break;
+ }
+ }
+ }
+ };
+ int[] folderEvents = new int[] {
+ SWT.Dispose,
+ SWT.Resize,
+ SWT.FocusIn,
+ SWT.Activate,
+ SWT.Deactivate,
+ SWT.Show,
+ SWT.KeyDown // needed to make browser traversable
+ };
+ for (int i = 0; i < folderEvents.length; i++) {
+ browser.addListener (folderEvents[i], listener);
+ }
+}
+
+public boolean back () {
+ htmlBytes = null;
+
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = webBrowser.QueryInterface (nsIWebNavigation.NS_IWEBNAVIGATION_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_ERROR_NO_INTERFACE);
+
+ nsIWebNavigation webNavigation = new nsIWebNavigation (result[0]);
+ rc = webNavigation.GoBack ();
+ webNavigation.Release ();
+ return rc == XPCOM.NS_OK;
+}
+
+void createCOMInterfaces () {
+ // Create each of the interfaces that this object implements
+ supports = new XPCOMObject (new int[] {2, 0, 0}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ };
+
+ weakReference = new XPCOMObject (new int[] {2, 0, 0, 2}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return QueryReferent (args[0], args[1]);}
+ };
+
+ webProgressListener = new XPCOMObject (new int[] {2, 0, 0, 4, 6, 3, 4, 3}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return OnStateChange (args[0], args[1], (int)/*64*/args[2], (int)/*64*/args[3]);}
+ public int /*long*/ method4 (int /*long*/[] args) {return OnProgressChange (args[0], args[1], (int)/*64*/args[2], (int)/*64*/args[3], (int)/*64*/args[4], (int)/*64*/args[5]);}
+ public int /*long*/ method5 (int /*long*/[] args) {return OnLocationChange (args[0], args[1], args[2]);}
+ public int /*long*/ method6 (int /*long*/[] args) {return OnStatusChange (args[0], args[1], (int)/*64*/args[2], args[3]);}
+ public int /*long*/ method7 (int /*long*/[] args) {return OnSecurityChange (args[0], args[1], (int)/*64*/args[2]);}
+ };
+
+ webBrowserChrome = new XPCOMObject (new int[] {2, 0, 0, 2, 1, 1, 1, 1, 0, 2, 0, 1, 1}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return SetStatus ((int)/*64*/args[0], args[1]);}
+ public int /*long*/ method4 (int /*long*/[] args) {return GetWebBrowser (args[0]);}
+ public int /*long*/ method5 (int /*long*/[] args) {return SetWebBrowser (args[0]);}
+ public int /*long*/ method6 (int /*long*/[] args) {return GetChromeFlags (args[0]);}
+ public int /*long*/ method7 (int /*long*/[] args) {return SetChromeFlags ((int)/*64*/args[0]);}
+ public int /*long*/ method8 (int /*long*/[] args) {return DestroyBrowserWindow ();}
+ public int /*long*/ method9 (int /*long*/[] args) {return SizeBrowserTo ((int)/*64*/args[0], (int)/*64*/args[1]);}
+ public int /*long*/ method10 (int /*long*/[] args) {return ShowAsModal ();}
+ public int /*long*/ method11 (int /*long*/[] args) {return IsWindowModal (args[0]);}
+ public int /*long*/ method12 (int /*long*/[] args) {return ExitModalEventLoop ((int)/*64*/args[0]);}
+ };
+
+ webBrowserChromeFocus = new XPCOMObject (new int[] {2, 0, 0, 0, 0}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return FocusNextElement ();}
+ public int /*long*/ method4 (int /*long*/[] args) {return FocusPrevElement ();}
+ };
+
+ embeddingSiteWindow = new XPCOMObject (new int[] {2, 0, 0, 5, 5, 0, 1, 1, 1, 1, 1}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return SetDimensions ((int)/*64*/args[0], (int)/*64*/args[1], (int)/*64*/args[2], (int)/*64*/args[3], (int)/*64*/args[4]);}
+ public int /*long*/ method4 (int /*long*/[] args) {return GetDimensions ((int)/*64*/args[0], args[1], args[2], args[3], args[4]);}
+ public int /*long*/ method5 (int /*long*/[] args) {return SetFocus ();}
+ public int /*long*/ method6 (int /*long*/[] args) {return GetVisibility (args[0]);}
+ public int /*long*/ method7 (int /*long*/[] args) {return SetVisibility ((int)/*64*/args[0]);}
+ public int /*long*/ method8 (int /*long*/[] args) {return GetTitle (args[0]);}
+ public int /*long*/ method9 (int /*long*/[] args) {return SetTitle (args[0]);}
+ public int /*long*/ method10 (int /*long*/[] args) {return GetSiteWindow (args[0]);}
+ };
+
+ interfaceRequestor = new XPCOMObject (new int[] {2, 0, 0, 2} ){
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return GetInterface (args[0], args[1]);}
+ };
+
+ supportsWeakReference = new XPCOMObject (new int[] {2, 0, 0, 1}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return GetWeakReference (args[0]);}
+ };
+
+ contextMenuListener = new XPCOMObject (new int[] {2, 0, 0, 3}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return OnShowContextMenu ((int)/*64*/args[0], args[1], args[2]);}
+ };
+
+ uriContentListener = new XPCOMObject (new int[] {2, 0, 0, 2, 5, 3, 4, 1, 1, 1, 1}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return OnStartURIOpen (args[0], args[1]);}
+ public int /*long*/ method4 (int /*long*/[] args) {return DoContent (args[0], (int)/*64*/args[1], args[2], args[3], args[4]);}
+ public int /*long*/ method5 (int /*long*/[] args) {return IsPreferred (args[0], args[1], args[2]);}
+ public int /*long*/ method6 (int /*long*/[] args) {return CanHandleContent (args[0], (int)/*64*/args[1], args[2], args[3]);}
+ public int /*long*/ method7 (int /*long*/[] args) {return GetLoadCookie (args[0]);}
+ public int /*long*/ method8 (int /*long*/[] args) {return SetLoadCookie (args[0]);}
+ public int /*long*/ method9 (int /*long*/[] args) {return GetParentContentListener (args[0]);}
+ public int /*long*/ method10 (int /*long*/[] args) {return SetParentContentListener (args[0]);}
+ };
+
+ tooltipListener = new XPCOMObject (new int[] {2, 0, 0, 3, 0}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return OnShowTooltip ((int)/*64*/args[0], (int)/*64*/args[1], args[2]);}
+ public int /*long*/ method4 (int /*long*/[] args) {return OnHideTooltip ();}
+ };
+
+ domEventListener = new XPCOMObject (new int[] {2, 0, 0, 1}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return HandleEvent (args[0]);}
+ };
+}
+
+void deregisterFunction (BrowserFunction function) {
+ super.deregisterFunction (function);
+ AllFunctions.remove (new Integer (function.index));
+}
+
+void disposeCOMInterfaces () {
+ if (supports != null) {
+ supports.dispose ();
+ supports = null;
+ }
+ if (weakReference != null) {
+ weakReference.dispose ();
+ weakReference = null;
+ }
+ if (webProgressListener != null) {
+ webProgressListener.dispose ();
+ webProgressListener = null;
+ }
+ if (webBrowserChrome != null) {
+ webBrowserChrome.dispose ();
+ webBrowserChrome = null;
+ }
+ if (webBrowserChromeFocus != null) {
+ webBrowserChromeFocus.dispose ();
+ webBrowserChromeFocus = null;
+ }
+ if (embeddingSiteWindow != null) {
+ embeddingSiteWindow.dispose ();
+ embeddingSiteWindow = null;
+ }
+ if (interfaceRequestor != null) {
+ interfaceRequestor.dispose ();
+ interfaceRequestor = null;
+ }
+ if (supportsWeakReference != null) {
+ supportsWeakReference.dispose ();
+ supportsWeakReference = null;
+ }
+ if (contextMenuListener != null) {
+ contextMenuListener.dispose ();
+ contextMenuListener = null;
+ }
+ if (uriContentListener != null) {
+ uriContentListener.dispose ();
+ uriContentListener = null;
+ }
+ if (tooltipListener != null) {
+ tooltipListener.dispose ();
+ tooltipListener = null;
+ }
+ if (domEventListener != null) {
+ domEventListener.dispose ();
+ domEventListener = null;
+ }
+}
+
+public boolean execute (String script) {
+ /*
+ * This could be the first content that is set into the browser, so
+ * ensure that the custom subclass that works around Mozilla bug
+ * https://bugzilla.mozilla.org/show_bug.cgi?id=453523 is removed.
+ */
+ delegate.removeWindowSubclass ();
+
+ /*
+ * As of mozilla 1.9 executing javascript via the javascript: protocol no
+ * longer happens synchronously. As a result, the result of executing JS
+ * is not returned to the java side when expected by the client. The
+ * workaround is to invoke the javascript handler directly via C++, which is
+ * exposed as of mozilla 1.9.
+ */
+ int /*long*/[] result = new int /*long*/[1];
+ if (!IsPre_1_9) {
+ int rc = XPCOM.NS_GetServiceManager (result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+
+ nsIServiceManager serviceManager = new nsIServiceManager (result[0]);
+ result[0] = 0;
+ nsIPrincipal principal = null;
+ byte[] aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_SCRIPTSECURITYMANAGER_CONTRACTID, true);
+ rc = serviceManager.GetServiceByContractID (aContractID, nsIScriptSecurityManager_1_9_1.NS_ISCRIPTSECURITYMANAGER_IID, result);
+ if (rc == XPCOM.NS_OK && result[0] != 0) {
+ nsIScriptSecurityManager_1_9_1 securityManager = new nsIScriptSecurityManager_1_9_1 (result[0]);
+ result[0] = 0;
+ rc = securityManager.GetSystemPrincipal (result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_ERROR_NULL_POINTER);
+ principal = new nsIPrincipal (result[0]);
+ result[0] = 0;
+ securityManager.Release ();
+ } else {
+ rc = serviceManager.GetServiceByContractID (aContractID, nsIScriptSecurityManager_1_9.NS_ISCRIPTSECURITYMANAGER_IID, result);
+ if (rc == XPCOM.NS_OK && result[0] != 0) {
+ nsIScriptSecurityManager_1_9 securityManager = new nsIScriptSecurityManager_1_9 (result[0]);
+ result[0] = 0;
+ rc = securityManager.GetSystemPrincipal (result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_ERROR_NULL_POINTER);
+ principal = new nsIPrincipal (result[0]);
+ result[0] = 0;
+ securityManager.Release ();
+ }
+ }
+ serviceManager.Release ();
+
+ if (principal != null) {
+ rc = webBrowser.QueryInterface (nsIInterfaceRequestor.NS_IINTERFACEREQUESTOR_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_ERROR_NO_INTERFACE);
+
+ nsIInterfaceRequestor interfaceRequestor = new nsIInterfaceRequestor (result[0]);
+ result[0] = 0;
+ nsID scriptGlobalObjectNSID = new nsID ("6afecd40-0b9a-4cfd-8c42-0f645cd91829"); /* nsIScriptGlobalObject */ //$NON-NLS-1$
+ rc = interfaceRequestor.GetInterface (scriptGlobalObjectNSID, result);
+ interfaceRequestor.Release ();
+
+ if (rc == XPCOM.NS_OK && result[0] != 0) {
+ int /*long*/ scriptGlobalObject = result[0];
+ result[0] = 0;
+ rc = (int/*64*/)XPCOM.nsIScriptGlobalObject_EnsureScriptEnvironment (scriptGlobalObject, 2); /* nsIProgrammingLanguage.JAVASCRIPT */
+ if (rc != XPCOM.NS_OK) error (rc);
+ int /*long*/ scriptContext = XPCOM.nsIScriptGlobalObject_GetScriptContext (scriptGlobalObject, 2); /* nsIProgrammingLanguage.JAVASCRIPT */
+ int /*long*/ globalJSObject = XPCOM.nsIScriptGlobalObject_GetScriptGlobal (scriptGlobalObject, 2); /* nsIProgrammingLanguage.JAVASCRIPT */
+ new nsISupports (scriptGlobalObject).Release ();
+
+ if (scriptContext != 0 && globalJSObject != 0) {
+ /* ensure that the received nsIScriptContext implements the expected interface */
+ nsID scriptContextNSID = new nsID ("e7b9871d-3adc-4bf7-850d-7fb9554886bf"); /* nsIScriptContext */ //$NON-NLS-1$
+ rc = new nsISupports (scriptContext).QueryInterface (scriptContextNSID, result);
+ if (rc == XPCOM.NS_OK && result[0] != 0) {
+ new nsISupports (result[0]).Release ();
+ result[0] = 0;
+
+ int /*long*/ nativeContext = XPCOM.nsIScriptContext_GetNativeContext (scriptContext);
+ if (nativeContext != 0) {
+ int length = script.length ();
+ char[] scriptChars = new char[length];
+ script.getChars(0, length, scriptChars, 0);
+ byte[] urlbytes = MozillaDelegate.wcsToMbcs (null, getUrl (), true);
+ rc = principal.GetJSPrincipals (nativeContext, result);
+ if (rc == XPCOM.NS_OK && result[0] != 0) {
+ int /*long*/ principals = result[0];
+ result[0] = 0;
+ principal.Release ();
+ String mozillaPath = LocationProvider.mozillaPath + delegate.getJSLibraryName () + '\0';
+ byte[] pathBytes = null;
+ try {
+ pathBytes = mozillaPath.getBytes ("UTF-8"); //$NON-NLS-1$
+ } catch (UnsupportedEncodingException e) {
+ pathBytes = mozillaPath.getBytes ();
+ }
+ rc = XPCOM.JS_EvaluateUCScriptForPrincipals (pathBytes, nativeContext, globalJSObject, principals, scriptChars, length, urlbytes, 0, result);
+ return rc != 0;
+ }
+ }
+ }
+ }
+ }
+ principal.Release ();
+ }
+ }
+
+ /* fall back to the pre-1.9 approach */
+
+ String url = PREFIX_JAVASCRIPT + script + ";void(0);"; //$NON-NLS-1$
+ int rc = webBrowser.QueryInterface (nsIWebNavigation.NS_IWEBNAVIGATION_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_ERROR_NO_INTERFACE);
+
+ nsIWebNavigation webNavigation = new nsIWebNavigation (result[0]);
+ char[] arg = url.toCharArray ();
+ char[] c = new char[arg.length+1];
+ System.arraycopy (arg, 0, c, 0, arg.length);
+ rc = webNavigation.LoadURI (c, nsIWebNavigation.LOAD_FLAGS_NONE, 0, 0, 0);
+ webNavigation.Release ();
+ return rc == XPCOM.NS_OK;
+}
+
+static Browser findBrowser (int /*long*/ handle) {
+ return MozillaDelegate.findBrowser (handle);
+}
+
+static Browser findBrowser (nsIDOMWindow aDOMWindow) {
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = XPCOM.NS_GetServiceManager (result);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (result[0] == 0) Mozilla.error (XPCOM.NS_NOINTERFACE);
+
+ nsIServiceManager serviceManager = new nsIServiceManager (result[0]);
+ result[0] = 0;
+ byte[] aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_WINDOWWATCHER_CONTRACTID, true);
+ rc = serviceManager.GetServiceByContractID (aContractID, nsIWindowWatcher.NS_IWINDOWWATCHER_IID, result);
+ if (rc != XPCOM.NS_OK) Mozilla.error(rc);
+ if (result[0] == 0) Mozilla.error (XPCOM.NS_NOINTERFACE);
+ serviceManager.Release ();
+
+ nsIWindowWatcher windowWatcher = new nsIWindowWatcher (result[0]);
+ result[0] = 0;
+ /* the chrome will only be answered for the top-level nsIDOMWindow */
+ rc = aDOMWindow.GetTop (result);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (result[0] == 0) Mozilla.error (XPCOM.NS_NOINTERFACE);
+ int /*long*/ topDOMWindow = result[0];
+ result[0] = 0;
+ rc = windowWatcher.GetChromeForWindow (topDOMWindow, result);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ new nsISupports (topDOMWindow).Release ();
+ windowWatcher.Release ();
+ if (result[0] == 0) return null; /* the parent chrome is disconnected */
+
+ nsIWebBrowserChrome webBrowserChrome = new nsIWebBrowserChrome (result[0]);
+ result[0] = 0;
+ rc = webBrowserChrome.QueryInterface (nsIEmbeddingSiteWindow.NS_IEMBEDDINGSITEWINDOW_IID, result);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (result[0] == 0) Mozilla.error (XPCOM.NS_NOINTERFACE);
+ webBrowserChrome.Release ();
+
+ nsIEmbeddingSiteWindow embeddingSiteWindow = new nsIEmbeddingSiteWindow (result[0]);
+ result[0] = 0;
+ rc = embeddingSiteWindow.GetSiteWindow (result);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (result[0] == 0) Mozilla.error (XPCOM.NS_NOINTERFACE);
+ embeddingSiteWindow.Release ();
+
+ return findBrowser (result[0]);
+}
+
+public boolean forward () {
+ htmlBytes = null;
+
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = webBrowser.QueryInterface (nsIWebNavigation.NS_IWEBNAVIGATION_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_ERROR_NO_INTERFACE);
+
+ nsIWebNavigation webNavigation = new nsIWebNavigation (result[0]);
+ rc = webNavigation.GoForward ();
+ webNavigation.Release ();
+
+ return rc == XPCOM.NS_OK;
+}
+
+public String getBrowserType () {
+ return "mozilla"; //$NON-NLS-1$
+}
+
+int getNextFunctionIndex () {
+ return NextJSFunctionIndex++;
+}
+
+public String getText () {
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = webBrowser.GetContentDOMWindow (result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+
+ nsIDOMWindow window = new nsIDOMWindow (result[0]);
+ result[0] = 0;
+ rc = window.GetDocument (result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+ window.Release ();
+
+ int /*long*/ document = result[0];
+ result[0] = 0;
+ rc = XPCOM.NS_GetComponentManager (result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+
+ nsIComponentManager componentManager = new nsIComponentManager (result[0]);
+ result[0] = 0;
+ byte[] contractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_DOMSERIALIZER_CONTRACTID, true);
+ char[] chars = null;
+
+ rc = componentManager.CreateInstanceByContractID (contractID, 0, nsIDOMSerializer_1_7.NS_IDOMSERIALIZER_IID, result);
+ if (rc == XPCOM.NS_OK) { /* mozilla >= 1.7 */
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+
+ nsIDOMSerializer_1_7 serializer = new nsIDOMSerializer_1_7 (result[0]);
+ result[0] = 0;
+ int /*long*/ string = XPCOM.nsEmbedString_new ();
+ rc = serializer.SerializeToString (document, string);
+ serializer.Release ();
+
+ int length = XPCOM.nsEmbedString_Length (string);
+ int /*long*/ buffer = XPCOM.nsEmbedString_get (string);
+ chars = new char[length];
+ XPCOM.memmove (chars, buffer, length * 2);
+ XPCOM.nsEmbedString_delete (string);
+ } else { /* mozilla < 1.7 */
+ rc = componentManager.CreateInstanceByContractID (contractID, 0, nsIDOMSerializer.NS_IDOMSERIALIZER_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+
+ nsIDOMSerializer serializer = new nsIDOMSerializer (result[0]);
+ result[0] = 0;
+ rc = serializer.SerializeToString (document, result);
+ serializer.Release ();
+
+ int length = XPCOM.strlen_PRUnichar (result[0]);
+ chars = new char[length];
+ XPCOM.memmove (chars, result[0], length * 2);
+ }
+
+ componentManager.Release ();
+ new nsISupports (document).Release ();
+ return new String (chars);
+}
+
+public String getUrl () {
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = webBrowser.QueryInterface (nsIWebNavigation.NS_IWEBNAVIGATION_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_ERROR_NO_INTERFACE);
+
+ nsIWebNavigation webNavigation = new nsIWebNavigation (result[0]);
+ int /*long*/[] aCurrentURI = new int /*long*/[1];
+ rc = webNavigation.GetCurrentURI (aCurrentURI);
+ if (rc != XPCOM.NS_OK) error (rc);
+ webNavigation.Release ();
+
+ byte[] dest = null;
+ if (aCurrentURI[0] != 0) {
+ nsIURI uri = new nsIURI (aCurrentURI[0]);
+ int /*long*/ aSpec = XPCOM.nsEmbedCString_new ();
+ rc = uri.GetSpec (aSpec);
+ if (rc != XPCOM.NS_OK) error (rc);
+ int length = XPCOM.nsEmbedCString_Length (aSpec);
+ int /*long*/ buffer = XPCOM.nsEmbedCString_get (aSpec);
+ dest = new byte[length];
+ XPCOM.memmove (dest, buffer, length);
+ XPCOM.nsEmbedCString_delete (aSpec);
+ uri.Release ();
+ }
+ if (dest == null) return ""; //$NON-NLS-1$
+
+ String location = new String (dest);
+ /*
+ * If the URI indicates that the page is being rendered from memory
+ * (via setText()) then set it to about:blank to be consistent with IE.
+ */
+ if (location.equals (URI_FROMMEMORY)) location = ABOUT_BLANK;
+ return location;
+}
+
+public Object getWebBrowser () {
+ if ((browser.getStyle () & SWT.MOZILLA) == 0) return null;
+ if (webBrowserObject != null) return webBrowserObject;
+
+ try {
+ Class clazz = Class.forName ("org.mozilla.xpcom.Mozilla"); //$NON-NLS-1$
+ Method method = clazz.getMethod ("getInstance", new Class[0]); //$NON-NLS-1$
+ Object mozilla = method.invoke (null, new Object[0]);
+ method = clazz.getMethod ("wrapXPCOMObject", new Class[] {Long.TYPE, String.class}); //$NON-NLS-1$
+ webBrowserObject = method.invoke (mozilla, new Object[] {new Long (webBrowser.getAddress ()), nsIWebBrowser.NS_IWEBBROWSER_IID_STR});
+ /*
+ * The following AddRef() is needed to offset the automatic Release() that
+ * will be performed by JavaXPCOM when webBrowserObject is finalized.
+ */
+ webBrowser.AddRef ();
+ return webBrowserObject;
+ } catch (ClassNotFoundException e) {
+ } catch (NoSuchMethodException e) {
+ } catch (IllegalArgumentException e) {
+ } catch (IllegalAccessException e) {
+ } catch (InvocationTargetException e) {
+ }
+ return null;
+}
+
+public boolean isBackEnabled () {
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = webBrowser.QueryInterface (nsIWebNavigation.NS_IWEBNAVIGATION_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_ERROR_NO_INTERFACE);
+
+ nsIWebNavigation webNavigation = new nsIWebNavigation (result[0]);
+ int[] aCanGoBack = new int[1]; /* PRBool */
+ rc = webNavigation.GetCanGoBack (aCanGoBack);
+ webNavigation.Release ();
+ return aCanGoBack[0] != 0;
+}
+
+public boolean isForwardEnabled () {
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = webBrowser.QueryInterface (nsIWebNavigation.NS_IWEBNAVIGATION_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_ERROR_NO_INTERFACE);
+
+ nsIWebNavigation webNavigation = new nsIWebNavigation (result[0]);
+ int[] aCanGoForward = new int[1]; /* PRBool */
+ rc = webNavigation.GetCanGoForward (aCanGoForward);
+ webNavigation.Release ();
+ return aCanGoForward[0] != 0;
+}
+
+static String error (int code) {
+ throw new SWTError ("XPCOM error " + code); //$NON-NLS-1$
+}
+
+void onDispose (Display display) {
+ int rc = webBrowser.RemoveWebBrowserListener (weakReference.getAddress (), nsIWebProgressListener.NS_IWEBPROGRESSLISTENER_IID);
+ if (rc != XPCOM.NS_OK) error (rc);
+
+ rc = webBrowser.SetParentURIContentListener (0);
+ if (rc != XPCOM.NS_OK) error (rc);
+
+ rc = webBrowser.SetContainerWindow (0);
+ if (rc != XPCOM.NS_OK) error (rc);
+
+ unhookDOMListeners ();
+ if (listener != null) {
+ int[] folderEvents = new int[] {
+ SWT.Dispose,
+ SWT.Resize,
+ SWT.FocusIn,
+ SWT.Activate,
+ SWT.Deactivate,
+ SWT.Show,
+ SWT.KeyDown,
+ };
+ for (int i = 0; i < folderEvents.length; i++) {
+ browser.removeListener (folderEvents[i], listener);
+ }
+ listener = null;
+ }
+
+ int /*long*/[] result = new int /*long*/[1];
+ rc = webBrowser.QueryInterface (nsIBaseWindow.NS_IBASEWINDOW_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_ERROR_NO_INTERFACE);
+
+ nsIBaseWindow baseWindow = new nsIBaseWindow (result[0]);
+ rc = baseWindow.Destroy ();
+ if (rc != XPCOM.NS_OK) error (rc);
+ baseWindow.Release ();
+
+ Release ();
+ webBrowser.Release ();
+ webBrowser = null;
+ webBrowserObject = null;
+ lastNavigateURL = null;
+ htmlBytes = null;
+
+ if (tip != null && !tip.isDisposed ()) tip.dispose ();
+ tip = null;
+ location = size = null;
+
+ Enumeration elements = unhookedDOMWindows.elements ();
+ while (elements.hasMoreElements ()) {
+ LONG ptrObject = (LONG)elements.nextElement ();
+ new nsISupports (ptrObject.value).Release ();
+ }
+ unhookedDOMWindows = null;
+
+ elements = functions.elements ();
+ while (elements.hasMoreElements ()) {
+ BrowserFunction function = ((BrowserFunction)elements.nextElement ());
+ AllFunctions.remove (new Integer (function.index));
+ function.dispose (false);
+ }
+ functions = null;
+
+ delegate.onDispose (embedHandle);
+ delegate = null;
+
+ embedHandle = 0;
+ BrowserCount--;
+}
+
+void Activate () {
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = webBrowser.QueryInterface (nsIWebBrowserFocus.NS_IWEBBROWSERFOCUS_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_ERROR_NO_INTERFACE);
+
+ nsIWebBrowserFocus webBrowserFocus = new nsIWebBrowserFocus (result[0]);
+ rc = webBrowserFocus.Activate ();
+ if (rc != XPCOM.NS_OK) error (rc);
+ webBrowserFocus.Release ();
+}
+
+void Deactivate () {
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = webBrowser.QueryInterface (nsIWebBrowserFocus.NS_IWEBBROWSERFOCUS_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_ERROR_NO_INTERFACE);
+
+ nsIWebBrowserFocus webBrowserFocus = new nsIWebBrowserFocus (result[0]);
+ rc = webBrowserFocus.Deactivate ();
+ if (rc != XPCOM.NS_OK) error (rc);
+ webBrowserFocus.Release ();
+}
+
+void onResize () {
+ Rectangle rect = browser.getClientArea ();
+ int width = Math.max (1, rect.width);
+ int height = Math.max (1, rect.height);
+
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = webBrowser.QueryInterface (nsIBaseWindow.NS_IBASEWINDOW_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_ERROR_NO_INTERFACE);
+
+ delegate.setSize (embedHandle, width, height);
+ nsIBaseWindow baseWindow = new nsIBaseWindow (result[0]);
+ rc = baseWindow.SetPositionAndSize (0, 0, width, height, 1);
+ if (rc != XPCOM.NS_OK) error (rc);
+ baseWindow.Release ();
+}
+
+public void refresh () {
+ htmlBytes = null;
+
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = webBrowser.QueryInterface (nsIWebNavigation.NS_IWEBNAVIGATION_IID, result);
+ if (rc != XPCOM.NS_OK) error(rc);
+ if (result[0] == 0) error (XPCOM.NS_ERROR_NO_INTERFACE);
+
+ nsIWebNavigation webNavigation = new nsIWebNavigation (result[0]);
+ rc = webNavigation.Reload (nsIWebNavigation.LOAD_FLAGS_NONE);
+ webNavigation.Release ();
+ if (rc == XPCOM.NS_OK) return;
+ /*
+ * Feature in Mozilla. Reload returns an error code NS_ERROR_INVALID_POINTER
+ * when it is called immediately after a request to load a new document using
+ * LoadURI. The workaround is to ignore this error code.
+ *
+ * Feature in Mozilla. Attempting to reload a file that no longer exists
+ * returns an error code of NS_ERROR_FILE_NOT_FOUND. This is equivalent to
+ * attempting to load a non-existent local url, which is not a Browser error,
+ * so this error code should be ignored.
+ */
+ if (rc != XPCOM.NS_ERROR_INVALID_POINTER && rc != XPCOM.NS_ERROR_FILE_NOT_FOUND) error (rc);
+}
+
+void registerFunction (BrowserFunction function) {
+ super.registerFunction (function);
+ AllFunctions.put (new Integer (function.index), function);
+}
+
+public boolean setText (String html) {
+ /*
+ * Feature in Mozilla. The focus memory of Mozilla must be
+ * properly managed through the nsIWebBrowserFocus interface.
+ * In particular, nsIWebBrowserFocus.deactivate must be called
+ * when the focus moves from the browser (or one of its children
+ * managed by Mozilla to another widget. We currently do not
+ * get notified when a widget takes focus away from the Browser.
+ * As a result, deactivate is not properly called. This causes
+ * Mozilla to retake focus the next time a document is loaded.
+ * This breaks the case where the HTML loaded in the Browser
+ * varies while the user enters characters in a text widget. The text
+ * widget loses focus every time new content is loaded.
+ * The current workaround is to call deactivate everytime if
+ * the browser currently does not have focus. A better workaround
+ * would be to have a way to call deactivate when the Browser
+ * or one of its children loses focus.
+ */
+ if (browser != browser.getDisplay ().getFocusControl ()) Deactivate ();
+
+ /* convert the String containing HTML to an array of bytes with UTF-8 data */
+ byte[] data = null;
+ try {
+ data = html.getBytes ("UTF-8"); //$NON-NLS-1$
+ } catch (UnsupportedEncodingException e) {
+ return false;
+ }
+
+ /*
+ * This could be the first content that is set into the browser, so
+ * ensure that the custom subclass that works around Mozilla bug
+ * https://bugzilla.mozilla.org/show_bug.cgi?id=453523 is removed.
+ */
+ delegate.removeWindowSubclass ();
+
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = webBrowser.QueryInterface (nsIWebBrowserStream.NS_IWEBBROWSERSTREAM_IID, result);
+ if (rc == XPCOM.NS_OK && result[0] != 0) {
+ /*
+ * Setting mozilla's content through nsIWebBrowserStream does not cause a page
+ * load to occur, so the events that usually accompany a page change are not
+ * fired. To make this behave as expected, navigate to about:blank first and
+ * then set the html content once the page has loaded.
+ */
+ new nsISupports (result[0]).Release ();
+ result[0] = 0;
+
+ /*
+ * If htmlBytes is not null then the about:blank page is already being loaded,
+ * so no Navigate is required. Just set the html that is to be shown.
+ */
+ boolean blankLoading = htmlBytes != null;
+ htmlBytes = data;
+ if (blankLoading) return true;
+
+ /* navigate to about:blank */
+ rc = webBrowser.QueryInterface (nsIWebNavigation.NS_IWEBNAVIGATION_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_ERROR_NO_INTERFACE);
+ nsIWebNavigation webNavigation = new nsIWebNavigation (result[0]);
+ result[0] = 0;
+ char[] uri = new char[ABOUT_BLANK.length () + 1];
+ ABOUT_BLANK.getChars (0, ABOUT_BLANK.length (), uri, 0);
+ rc = webNavigation.LoadURI (uri, nsIWebNavigation.LOAD_FLAGS_NONE, 0, 0, 0);
+ if (rc != XPCOM.NS_OK) error (rc);
+ webNavigation.Release ();
+ } else {
+ byte[] contentCharsetBuffer = MozillaDelegate.wcsToMbcs (null, "UTF-8", true); //$NON-NLS-1$
+ int /*long*/ aContentCharset = XPCOM.nsEmbedCString_new (contentCharsetBuffer, contentCharsetBuffer.length);
+ byte[] contentTypeBuffer = MozillaDelegate.wcsToMbcs (null, "text/html", true); // $NON-NLS-1$
+ int /*long*/ aContentType = XPCOM.nsEmbedCString_new (contentTypeBuffer, contentTypeBuffer.length);
+
+ rc = XPCOM.NS_GetServiceManager (result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+
+ nsIServiceManager serviceManager = new nsIServiceManager (result[0]);
+ result[0] = 0;
+ rc = serviceManager.GetService (XPCOM.NS_IOSERVICE_CID, nsIIOService.NS_IIOSERVICE_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+ serviceManager.Release ();
+
+ nsIIOService ioService = new nsIIOService (result[0]);
+ result[0] = 0;
+ /*
+ * Note. Mozilla ignores LINK tags used to load CSS stylesheets
+ * when the URI protocol for the nsInputStreamChannel
+ * is about:blank. The fix is to specify the file protocol.
+ */
+ byte[] aString = MozillaDelegate.wcsToMbcs (null, URI_FROMMEMORY, false);
+ int /*long*/ aSpec = XPCOM.nsEmbedCString_new (aString, aString.length);
+ rc = ioService.NewURI (aSpec, null, 0, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+ XPCOM.nsEmbedCString_delete (aSpec);
+ ioService.Release ();
+
+ nsIURI uri = new nsIURI (result[0]);
+ result[0] = 0;
+
+ rc = webBrowser.QueryInterface (nsIInterfaceRequestor.NS_IINTERFACEREQUESTOR_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_ERROR_NO_INTERFACE);
+ nsIInterfaceRequestor interfaceRequestor = new nsIInterfaceRequestor (result[0]);
+ result[0] = 0;
+
+ /*
+ * Feature in Mozilla. LoadStream invokes the nsIInputStream argument
+ * through a different thread. The callback mechanism must attach
+ * a non java thread to the JVM otherwise the nsIInputStream Read and
+ * Close methods never get called.
+ */
+ InputStream inputStream = new InputStream (data);
+ inputStream.AddRef ();
+
+ rc = interfaceRequestor.GetInterface (nsIDocShell.NS_IDOCSHELL_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_ERROR_NO_INTERFACE);
+ nsIDocShell docShell = new nsIDocShell (result[0]);
+ result[0] = 0;
+ rc = docShell.LoadStream (inputStream.getAddress (), uri.getAddress (), aContentType, aContentCharset, 0);
+ docShell.Release ();
+
+ inputStream.Release ();
+ interfaceRequestor.Release ();
+ uri.Release ();
+ XPCOM.nsEmbedCString_delete (aContentType);
+ XPCOM.nsEmbedCString_delete (aContentCharset);
+ }
+ return true;
+}
+
+public boolean setUrl (String url) {
+ htmlBytes = null;
+
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = webBrowser.QueryInterface (nsIWebNavigation.NS_IWEBNAVIGATION_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_ERROR_NO_INTERFACE);
+
+ /*
+ * This could be the first content that is set into the browser, so
+ * ensure that the custom subclass that works around Mozilla bug
+ * https://bugzilla.mozilla.org/show_bug.cgi?id=453523 is removed.
+ */
+ delegate.removeWindowSubclass ();
+
+ nsIWebNavigation webNavigation = new nsIWebNavigation (result[0]);
+ char[] uri = new char[url.length () + 1];
+ url.getChars (0, url.length (), uri, 0);
+ rc = webNavigation.LoadURI (uri, nsIWebNavigation.LOAD_FLAGS_NONE, 0, 0, 0);
+ webNavigation.Release ();
+ return rc == XPCOM.NS_OK;
+}
+
+public void stop () {
+ htmlBytes = null;
+
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = webBrowser.QueryInterface (nsIWebNavigation.NS_IWEBNAVIGATION_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_ERROR_NO_INTERFACE);
+
+ nsIWebNavigation webNavigation = new nsIWebNavigation (result[0]);
+ rc = webNavigation.Stop (nsIWebNavigation.STOP_ALL);
+ if (rc != XPCOM.NS_OK) error (rc);
+ webNavigation.Release ();
+}
+
+void hookDOMListeners (nsIDOMEventTarget target, boolean isTop) {
+ nsEmbedString string = new nsEmbedString (XPCOM.DOMEVENT_FOCUS);
+ target.AddEventListener (string.getAddress (), domEventListener.getAddress (), 0);
+ string.dispose ();
+ string = new nsEmbedString (XPCOM.DOMEVENT_UNLOAD);
+ target.AddEventListener (string.getAddress (), domEventListener.getAddress (), 0);
+ string.dispose ();
+ string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEDOWN);
+ target.AddEventListener (string.getAddress (), domEventListener.getAddress (), 0);
+ string.dispose ();
+ string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEUP);
+ target.AddEventListener (string.getAddress (), domEventListener.getAddress (), 0);
+ string.dispose ();
+ string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEMOVE);
+ target.AddEventListener (string.getAddress (), domEventListener.getAddress (), 0);
+ string.dispose ();
+ string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEWHEEL);
+ target.AddEventListener (string.getAddress (), domEventListener.getAddress (), 0);
+ string.dispose ();
+ string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEDRAG);
+ target.AddEventListener (string.getAddress (), domEventListener.getAddress (), 0);
+ string.dispose ();
+
+ /*
+ * Only hook mouseover and mouseout if the target is a top-level frame, so that mouse moves
+ * between frames will not generate events.
+ */
+ if (isTop && delegate.hookEnterExit ()) {
+ string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEOVER);
+ target.AddEventListener (string.getAddress (), domEventListener.getAddress (), 0);
+ string.dispose ();
+ string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEOUT);
+ target.AddEventListener (string.getAddress (), domEventListener.getAddress (), 0);
+ string.dispose ();
+ }
+
+ string = new nsEmbedString (XPCOM.DOMEVENT_KEYDOWN);
+ target.AddEventListener (string.getAddress (), domEventListener.getAddress (), 0);
+ string.dispose ();
+ string = new nsEmbedString (XPCOM.DOMEVENT_KEYPRESS);
+ target.AddEventListener (string.getAddress (), domEventListener.getAddress (), 0);
+ string.dispose ();
+ string = new nsEmbedString (XPCOM.DOMEVENT_KEYUP);
+ target.AddEventListener (string.getAddress (), domEventListener.getAddress (), 0);
+ string.dispose ();
+}
+
+void unhookDOMListeners () {
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = webBrowser.GetContentDOMWindow (result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_ERROR_NO_INTERFACE);
+
+ nsIDOMWindow window = new nsIDOMWindow (result[0]);
+ result[0] = 0;
+ rc = window.QueryInterface (nsIDOMEventTarget.NS_IDOMEVENTTARGET_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_ERROR_NO_INTERFACE);
+
+ nsIDOMEventTarget target = new nsIDOMEventTarget (result[0]);
+ result[0] = 0;
+ unhookDOMListeners (target);
+ target.Release ();
+
+ /* Listeners must be unhooked in pages contained in frames */
+ rc = window.GetFrames (result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_ERROR_NO_INTERFACE);
+ nsIDOMWindowCollection frames = new nsIDOMWindowCollection (result[0]);
+ result[0] = 0;
+ int[] frameCount = new int[1];
+ rc = frames.GetLength (frameCount); /* PRUint32 */
+ if (rc != XPCOM.NS_OK) error (rc);
+ int count = frameCount[0];
+
+ if (count > 0) {
+ for (int i = 0; i < count; i++) {
+ rc = frames.Item (i, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_ERROR_NO_INTERFACE);
+
+ nsIDOMWindow frame = new nsIDOMWindow (result[0]);
+ result[0] = 0;
+ rc = frame.QueryInterface (nsIDOMEventTarget.NS_IDOMEVENTTARGET_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_ERROR_NO_INTERFACE);
+
+ target = new nsIDOMEventTarget (result[0]);
+ result[0] = 0;
+ unhookDOMListeners (target);
+ target.Release ();
+ frame.Release ();
+ }
+ }
+ frames.Release ();
+ window.Release ();
+}
+
+void unhookDOMListeners (nsIDOMEventTarget target) {
+ nsEmbedString string = new nsEmbedString (XPCOM.DOMEVENT_FOCUS);
+ target.RemoveEventListener (string.getAddress (), domEventListener.getAddress (), 0);
+ string.dispose ();
+ string = new nsEmbedString (XPCOM.DOMEVENT_UNLOAD);
+ target.RemoveEventListener (string.getAddress (), domEventListener.getAddress (), 0);
+ string.dispose ();
+ string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEDOWN);
+ target.RemoveEventListener (string.getAddress (), domEventListener.getAddress (), 0);
+ string.dispose ();
+ string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEUP);
+ target.RemoveEventListener (string.getAddress (), domEventListener.getAddress (), 0);
+ string.dispose ();
+ string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEMOVE);
+ target.RemoveEventListener (string.getAddress (), domEventListener.getAddress (), 0);
+ string.dispose ();
+ string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEWHEEL);
+ target.RemoveEventListener (string.getAddress (), domEventListener.getAddress (), 0);
+ string.dispose ();
+ string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEDRAG);
+ target.RemoveEventListener (string.getAddress (), domEventListener.getAddress (), 0);
+ string.dispose ();
+ string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEOVER);
+ target.RemoveEventListener (string.getAddress (), domEventListener.getAddress (), 0);
+ string.dispose ();
+ string = new nsEmbedString (XPCOM.DOMEVENT_MOUSEOUT);
+ target.RemoveEventListener (string.getAddress (), domEventListener.getAddress (), 0);
+ string.dispose ();
+ string = new nsEmbedString (XPCOM.DOMEVENT_KEYDOWN);
+ target.RemoveEventListener (string.getAddress (), domEventListener.getAddress (), 0);
+ string.dispose ();
+ string = new nsEmbedString (XPCOM.DOMEVENT_KEYPRESS);
+ target.RemoveEventListener (string.getAddress (), domEventListener.getAddress (), 0);
+ string.dispose ();
+ string = new nsEmbedString (XPCOM.DOMEVENT_KEYUP);
+ target.RemoveEventListener (string.getAddress (), domEventListener.getAddress (), 0);
+ string.dispose ();
+}
+
+/* nsISupports */
+
+int QueryInterface (int /*long*/ riid, int /*long*/ ppvObject) {
+ if (riid == 0 || ppvObject == 0) return XPCOM.NS_ERROR_NO_INTERFACE;
+
+ nsID guid = new nsID ();
+ XPCOM.memmove (guid, riid, nsID.sizeof);
+
+ if (guid.Equals (nsISupports.NS_ISUPPORTS_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {supports.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsIWeakReference.NS_IWEAKREFERENCE_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {weakReference.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsIWebProgressListener.NS_IWEBPROGRESSLISTENER_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {webProgressListener.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsIWebBrowserChrome.NS_IWEBBROWSERCHROME_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {webBrowserChrome.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsIWebBrowserChromeFocus.NS_IWEBBROWSERCHROMEFOCUS_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {webBrowserChromeFocus.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsIEmbeddingSiteWindow.NS_IEMBEDDINGSITEWINDOW_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {embeddingSiteWindow.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsIInterfaceRequestor.NS_IINTERFACEREQUESTOR_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {interfaceRequestor.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsISupportsWeakReference.NS_ISUPPORTSWEAKREFERENCE_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {supportsWeakReference.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsIContextMenuListener.NS_ICONTEXTMENULISTENER_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {contextMenuListener.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsIURIContentListener.NS_IURICONTENTLISTENER_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {uriContentListener.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsITooltipListener.NS_ITOOLTIPLISTENER_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {tooltipListener.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+ XPCOM.memmove (ppvObject, new int /*long*/[] {0}, C.PTR_SIZEOF);
+ return XPCOM.NS_ERROR_NO_INTERFACE;
+}
+
+int AddRef () {
+ refCount++;
+ return refCount;
+}
+
+int Release () {
+ refCount--;
+ if (refCount == 0) disposeCOMInterfaces ();
+ return refCount;
+}
+
+/* nsIWeakReference */
+
+int QueryReferent (int /*long*/ riid, int /*long*/ ppvObject) {
+ return QueryInterface (riid, ppvObject);
+}
+
+/* nsIInterfaceRequestor */
+
+int GetInterface (int /*long*/ riid, int /*long*/ ppvObject) {
+ if (riid == 0 || ppvObject == 0) return XPCOM.NS_ERROR_NO_INTERFACE;
+ nsID guid = new nsID ();
+ XPCOM.memmove (guid, riid, nsID.sizeof);
+ if (guid.Equals (nsIDOMWindow.NS_IDOMWINDOW_IID)) {
+ int /*long*/[] aContentDOMWindow = new int /*long*/[1];
+ int rc = webBrowser.GetContentDOMWindow (aContentDOMWindow);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (aContentDOMWindow[0] == 0) error (XPCOM.NS_ERROR_NO_INTERFACE);
+ XPCOM.memmove (ppvObject, aContentDOMWindow, C.PTR_SIZEOF);
+ return rc;
+ }
+ return QueryInterface (riid, ppvObject);
+}
+
+int GetWeakReference (int /*long*/ ppvObject) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {weakReference.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+}
+
+/* nsIWebProgressListener */
+
+int OnStateChange (int /*long*/ aWebProgress, int /*long*/ aRequest, int aStateFlags, int aStatus) {
+ if (registerFunctionsOnState != 0 && ((aStateFlags & registerFunctionsOnState) == registerFunctionsOnState)) {
+ registerFunctionsOnState = 0;
+ Enumeration elements = functions.elements ();
+ while (elements.hasMoreElements ()) {
+ BrowserFunction function = (BrowserFunction)elements.nextElement ();
+ execute (function.functionString);
+ }
+ }
+
+ if ((aStateFlags & nsIWebProgressListener.STATE_IS_DOCUMENT) == 0) return XPCOM.NS_OK;
+ if ((aStateFlags & nsIWebProgressListener.STATE_START) != 0) {
+ if (request == 0) request = aRequest;
+ registerFunctionsOnState = nsIWebProgressListener.STATE_IS_REQUEST | nsIWebProgressListener.STATE_START;
+ /*
+ * Add the page's nsIDOMWindow to the collection of windows that will
+ * have DOM listeners added to them later on in the page loading
+ * process. These listeners cannot be added yet because the
+ * nsIDOMWindow is not ready to take them at this stage.
+ */
+ int /*long*/[] result = new int /*long*/[1];
+ nsIWebProgress progress = new nsIWebProgress (aWebProgress);
+ int rc = progress.GetDOMWindow (result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+ unhookedDOMWindows.addElement (new LONG (result[0]));
+ } else if ((aStateFlags & nsIWebProgressListener.STATE_REDIRECTING) != 0) {
+ if (request == aRequest) request = 0;
+ registerFunctionsOnState = nsIWebProgressListener.STATE_TRANSFERRING;
+ } else if ((aStateFlags & nsIWebProgressListener.STATE_STOP) != 0) {
+ /*
+ * If this page's nsIDOMWindow handle is still in unhookedDOMWindows then
+ * add its DOM listeners now. It's possible for this to happen since
+ * there is no guarantee that a STATE_TRANSFERRING state change will be
+ * received for every window in a page, which is when these listeners
+ * are typically added.
+ */
+ int /*long*/[] result = new int /*long*/[1];
+ nsIWebProgress progress = new nsIWebProgress (aWebProgress);
+ int rc = progress.GetDOMWindow (result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+ nsIDOMWindow domWindow = new nsIDOMWindow (result[0]);
+
+ LONG ptrObject = new LONG (result[0]);
+ result[0] = 0;
+ int index = unhookedDOMWindows.indexOf (ptrObject);
+ if (index != -1) {
+ rc = webBrowser.GetContentDOMWindow (result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_ERROR_NO_INTERFACE);
+ boolean isTop = result[0] == domWindow.getAddress ();
+ new nsISupports (result[0]).Release ();
+ result[0] = 0;
+
+ rc = domWindow.QueryInterface (nsIDOMEventTarget.NS_IDOMEVENTTARGET_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_ERROR_NO_INTERFACE);
+
+ nsIDOMEventTarget target = new nsIDOMEventTarget (result[0]);
+ result[0] = 0;
+ hookDOMListeners (target, isTop);
+ target.Release ();
+
+ /*
+ * Remove and unreference the nsIDOMWindow from the collection of windows
+ * that are waiting to have DOM listeners hooked on them.
+ */
+ unhookedDOMWindows.remove (ptrObject);
+ new nsISupports (ptrObject.value).Release ();
+ }
+
+ boolean deferCompleted = false;
+ /*
+ * If htmlBytes is not null then there is html from a previous setText() call
+ * waiting to be set into the about:blank page once it has completed loading.
+ */
+ if (htmlBytes != null) {
+ nsIRequest req = new nsIRequest (aRequest);
+ int /*long*/ name = XPCOM.nsEmbedCString_new ();
+ rc = req.GetName (name);
+ if (rc != XPCOM.NS_OK) error (rc);
+ int length = XPCOM.nsEmbedCString_Length (name);
+ int /*long*/ buffer = XPCOM.nsEmbedCString_get (name);
+ byte[] dest = new byte[length];
+ XPCOM.memmove (dest, buffer, length);
+ String url = new String (dest);
+ XPCOM.nsEmbedCString_delete (name);
+
+ if (url.startsWith (ABOUT_BLANK)) {
+ /*
+ * Setting mozilla's content with nsIWebBrowserStream invalidates the
+ * DOM listeners that were hooked on it (about:blank), so remove them and
+ * add new ones after the content has been set.
+ */
+ unhookDOMListeners ();
+
+ rc = XPCOM.NS_GetServiceManager (result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+
+ nsIServiceManager serviceManager = new nsIServiceManager (result[0]);
+ result[0] = 0;
+ rc = serviceManager.GetService (XPCOM.NS_IOSERVICE_CID, nsIIOService.NS_IIOSERVICE_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+ serviceManager.Release ();
+
+ nsIIOService ioService = new nsIIOService (result[0]);
+ result[0] = 0;
+ /*
+ * Note. Mozilla ignores LINK tags used to load CSS stylesheets
+ * when the URI protocol for the nsInputStreamChannel
+ * is about:blank. The fix is to specify the file protocol.
+ */
+ byte[] aString = MozillaDelegate.wcsToMbcs (null, URI_FROMMEMORY, false);
+ int /*long*/ aSpec = XPCOM.nsEmbedCString_new (aString, aString.length);
+ rc = ioService.NewURI (aSpec, null, 0, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+ XPCOM.nsEmbedCString_delete (aSpec);
+ ioService.Release ();
+
+ nsIURI uri = new nsIURI (result[0]);
+ result[0] = 0;
+
+ rc = webBrowser.QueryInterface (nsIWebBrowserStream.NS_IWEBBROWSERSTREAM_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+
+ nsIWebBrowserStream stream = new nsIWebBrowserStream (result[0]);
+ result[0] = 0;
+
+ byte[] contentTypeBuffer = MozillaDelegate.wcsToMbcs (null, "text/html", true); // $NON-NLS-1$
+ int /*long*/ aContentType = XPCOM.nsEmbedCString_new (contentTypeBuffer, contentTypeBuffer.length);
+
+ rc = stream.OpenStream (uri.getAddress (), aContentType);
+ if (rc != XPCOM.NS_OK) error (rc);
+
+ /*
+ * When content is being streamed to Mozilla this is the only place
+ * where registered functions can be re-installed such that they will
+ * be invokable at load time by JS contained in the stream.
+ */
+ Enumeration elements = functions.elements ();
+ while (elements.hasMoreElements ()) {
+ BrowserFunction function = (BrowserFunction)elements.nextElement ();
+ execute (function.functionString);
+ }
+
+ int /*long*/ ptr = C.malloc (htmlBytes.length);
+ XPCOM.memmove (ptr, htmlBytes, htmlBytes.length);
+ int pageSize = 8192;
+ int pageCount = htmlBytes.length / pageSize + 1;
+ int /*long*/ current = ptr;
+ for (int i = 0; i < pageCount; i++) {
+ length = i == pageCount - 1 ? htmlBytes.length % pageSize : pageSize;
+ if (length > 0) {
+ rc = stream.AppendToStream (current, length);
+ if (rc != XPCOM.NS_OK) error (rc);
+ }
+ current += pageSize;
+ }
+ rc = stream.CloseStream ();
+ if (rc != XPCOM.NS_OK) error (rc);
+ C.free (ptr);
+ XPCOM.nsEmbedCString_delete (aContentType);
+ stream.Release ();
+ uri.Release ();
+ htmlBytes = null;
+ /*
+ * Browser content that is set via nsIWebBrowserStream is not parsed immediately.
+ * Since clients depend on the Completed event to know when the browser's content
+ * is available, delay the sending of this event so that the stream content will
+ * be parsed first.
+ */
+ deferCompleted = true;
+
+ rc = webBrowser.GetContentDOMWindow (result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_ERROR_NO_INTERFACE);
+ boolean isTop = result[0] == domWindow.getAddress ();
+ new nsISupports (result[0]).Release ();
+ result[0] = 0;
+
+ rc = domWindow.QueryInterface (nsIDOMEventTarget.NS_IDOMEVENTTARGET_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_ERROR_NO_INTERFACE);
+ nsIDOMEventTarget target = new nsIDOMEventTarget (result[0]);
+ result[0] = 0;
+ hookDOMListeners (target, isTop);
+ target.Release ();
+ }
+ }
+ domWindow.Release ();
+
+ /*
+ * Feature in Mozilla. When a request is redirected (STATE_REDIRECTING),
+ * it never reaches the state STATE_STOP and it is replaced with a new request.
+ * The new request is received when it is in the state STATE_STOP.
+ * To handle this case, the variable request is set to 0 when the corresponding
+ * request is redirected. The following request received with the state STATE_STOP
+ * - the new request resulting from the redirection - is used to send
+ * the ProgressListener.completed event.
+ */
+ if (request == aRequest || request == 0) {
+ request = 0;
+ StatusTextEvent event = new StatusTextEvent (browser);
+ event.display = browser.getDisplay ();
+ event.widget = browser;
+ event.text = ""; //$NON-NLS-1$
+ for (int i = 0; i < statusTextListeners.length; i++) {
+ statusTextListeners[i].changed (event);
+ }
+
+ final Display display = browser.getDisplay ();
+ final ProgressEvent event2 = new ProgressEvent (browser);
+ event2.display = display;
+ event2.widget = browser;
+ Runnable runnable = new Runnable () {
+ public void run () {
+ if (browser.isDisposed ()) return;
+ for (int i = 0; i < progressListeners.length; i++) {
+ progressListeners[i].completed (event2);
+ }
+ }
+ };
+ if (deferCompleted) {
+ display.asyncExec (runnable);
+ } else {
+ display.syncExec (runnable);
+ }
+ }
+
+ registerFunctionsOnState = 0;
+ } else if ((aStateFlags & nsIWebProgressListener.STATE_TRANSFERRING) != 0) {
+ /*
+ * Hook DOM listeners to the page's nsIDOMWindow here because this is
+ * the earliest opportunity to do so.
+ */
+ int /*long*/[] result = new int /*long*/[1];
+ nsIWebProgress progress = new nsIWebProgress (aWebProgress);
+ int rc = progress.GetDOMWindow (result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+ nsIDOMWindow domWindow = new nsIDOMWindow (result[0]);
+
+ LONG ptrObject = new LONG (result[0]);
+ result[0] = 0;
+ int index = unhookedDOMWindows.indexOf (ptrObject);
+ if (index != -1) {
+ rc = webBrowser.GetContentDOMWindow (result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_ERROR_NO_INTERFACE);
+ boolean isTop = result[0] == domWindow.getAddress ();
+ new nsISupports (result[0]).Release ();
+ result[0] = 0;
+
+ rc = domWindow.QueryInterface (nsIDOMEventTarget.NS_IDOMEVENTTARGET_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_ERROR_NO_INTERFACE);
+
+ nsIDOMEventTarget target = new nsIDOMEventTarget (result[0]);
+ result[0] = 0;
+ hookDOMListeners (target, isTop);
+ target.Release ();
+
+ /*
+ * Remove and unreference the nsIDOMWindow from the collection of windows
+ * that are waiting to have DOM listeners hooked on them.
+ */
+ unhookedDOMWindows.remove (ptrObject);
+ new nsISupports (ptrObject.value).Release ();
+ }
+ domWindow.Release ();
+ }
+ return XPCOM.NS_OK;
+}
+
+int OnProgressChange (int /*long*/ aWebProgress, int /*long*/ aRequest, int aCurSelfProgress, int aMaxSelfProgress, int aCurTotalProgress, int aMaxTotalProgress) {
+ if (progressListeners.length == 0) return XPCOM.NS_OK;
+ ProgressEvent event = new ProgressEvent (browser);
+ event.display = browser.getDisplay ();
+ event.widget = browser;
+ event.current = aCurTotalProgress;
+ event.total = aMaxTotalProgress;
+ for (int i = 0; i < progressListeners.length; i++) {
+ progressListeners[i].changed (event);
+ }
+ return XPCOM.NS_OK;
+}
+
+int OnLocationChange (int /*long*/ aWebProgress, int /*long*/ aRequest, int /*long*/ aLocation) {
+ /*
+ * Feature in Mozilla. When a page is loaded via setText before a previous
+ * setText page load has completed, the expected OnStateChange STATE_STOP for the
+ * original setText never arrives because it gets replaced by the OnStateChange
+ * STATE_STOP for the new request. This results in the request field never being
+ * cleared because the original request's OnStateChange STATE_STOP is still expected
+ * (but never arrives). To handle this case, the request field is updated to the new
+ * overriding request since its OnStateChange STATE_STOP will be received next.
+ */
+ if (request != 0 && request != aRequest) request = aRequest;
+
+ if (locationListeners.length == 0) return XPCOM.NS_OK;
+
+ nsIWebProgress webProgress = new nsIWebProgress (aWebProgress);
+ int /*long*/[] aDOMWindow = new int /*long*/[1];
+ int rc = webProgress.GetDOMWindow (aDOMWindow);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (aDOMWindow[0] == 0) error (XPCOM.NS_ERROR_NO_INTERFACE);
+
+ nsIDOMWindow domWindow = new nsIDOMWindow (aDOMWindow[0]);
+ int /*long*/[] aTop = new int /*long*/[1];
+ rc = domWindow.GetTop (aTop);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (aTop[0] == 0) error (XPCOM.NS_ERROR_NO_INTERFACE);
+ domWindow.Release ();
+
+ nsIDOMWindow topWindow = new nsIDOMWindow (aTop[0]);
+ topWindow.Release ();
+
+ nsIURI location = new nsIURI (aLocation);
+ int /*long*/ aSpec = XPCOM.nsEmbedCString_new ();
+ location.GetSpec (aSpec);
+ int length = XPCOM.nsEmbedCString_Length (aSpec);
+ int /*long*/ buffer = XPCOM.nsEmbedCString_get (aSpec);
+ byte[] dest = new byte[length];
+ XPCOM.memmove (dest, buffer, length);
+ XPCOM.nsEmbedCString_delete (aSpec);
+ String url = new String (dest);
+
+ /*
+ * As of Mozilla 1.8, the first time that a page is displayed, regardless of
+ * whether it's via Browser.setURL() or Browser.setText(), the GRE navigates
+ * to about:blank and fires the corresponding navigation events. Do not send
+ * this event on to the user since it is not expected.
+ */
+ if (!IsPre_1_8 && aRequest == 0 && url.startsWith (ABOUT_BLANK)) return XPCOM.NS_OK;
+
+ LocationEvent event = new LocationEvent (browser);
+ event.display = browser.getDisplay ();
+ event.widget = browser;
+ event.location = url;
+ /*
+ * If the URI indicates that the page is being rendered from memory
+ * (via setText()) then set it to about:blank to be consistent with IE.
+ */
+ if (event.location.equals (URI_FROMMEMORY)) event.location = ABOUT_BLANK;
+ event.top = aTop[0] == aDOMWindow[0];
+ for (int i = 0; i < locationListeners.length; i++) {
+ locationListeners[i].changed (event);
+ }
+ return XPCOM.NS_OK;
+}
+
+int OnStatusChange (int /*long*/ aWebProgress, int /*long*/ aRequest, int aStatus, int /*long*/ aMessage) {
+ if (statusTextListeners.length == 0) return XPCOM.NS_OK;
+ StatusTextEvent event = new StatusTextEvent (browser);
+ event.display = browser.getDisplay ();
+ event.widget = browser;
+ int length = XPCOM.strlen_PRUnichar (aMessage);
+ char[] dest = new char[length];
+ XPCOM.memmove (dest, aMessage, length * 2);
+ event.text = new String (dest);
+ for (int i = 0; i < statusTextListeners.length; i++) {
+ statusTextListeners[i].changed (event);
+ }
+ return XPCOM.NS_OK;
+}
+
+int OnSecurityChange (int /*long*/ aWebProgress, int /*long*/ aRequest, int state) {
+ return XPCOM.NS_OK;
+}
+
+/* nsIWebBrowserChrome */
+
+int SetStatus (int statusType, int /*long*/ status) {
+ if (statusTextListeners.length == 0) return XPCOM.NS_OK;
+ StatusTextEvent event = new StatusTextEvent (browser);
+ event.display = browser.getDisplay ();
+ event.widget = browser;
+ int length = XPCOM.strlen_PRUnichar (status);
+ char[] dest = new char[length];
+ XPCOM.memmove (dest, status, length * 2);
+ String string = new String (dest);
+ event.text = string;
+ for (int i = 0; i < statusTextListeners.length; i++) {
+ statusTextListeners[i].changed (event);
+ }
+ return XPCOM.NS_OK;
+}
+
+int GetWebBrowser (int /*long*/ aWebBrowser) {
+ int /*long*/[] ret = new int /*long*/[1];
+ if (webBrowser != null) {
+ webBrowser.AddRef ();
+ ret[0] = webBrowser.getAddress ();
+ }
+ XPCOM.memmove (aWebBrowser, ret, C.PTR_SIZEOF);
+ return XPCOM.NS_OK;
+}
+
+int SetWebBrowser (int /*long*/ aWebBrowser) {
+ if (webBrowser != null) webBrowser.Release ();
+ webBrowser = aWebBrowser != 0 ? new nsIWebBrowser (aWebBrowser) : null;
+ return XPCOM.NS_OK;
+}
+
+int GetChromeFlags (int /*long*/ aChromeFlags) {
+ int[] ret = new int[1];
+ ret[0] = chromeFlags;
+ XPCOM.memmove (aChromeFlags, ret, 4); /* PRUint32 */
+ return XPCOM.NS_OK;
+}
+
+int SetChromeFlags (int aChromeFlags) {
+ chromeFlags = aChromeFlags;
+ return XPCOM.NS_OK;
+}
+
+int DestroyBrowserWindow () {
+ WindowEvent newEvent = new WindowEvent (browser);
+ newEvent.display = browser.getDisplay ();
+ newEvent.widget = browser;
+ for (int i = 0; i < closeWindowListeners.length; i++) {
+ closeWindowListeners[i].close (newEvent);
+ }
+ /*
+ * Note on Mozilla. The DestroyBrowserWindow notification cannot be cancelled.
+ * The browser widget cannot be used after this notification has been received.
+ * The application is advised to close the window hosting the browser widget.
+ * The browser widget must be disposed in all cases.
+ */
+ browser.dispose ();
+ return XPCOM.NS_OK;
+}
+
+int SizeBrowserTo (int aCX, int aCY) {
+ size = new Point (aCX, aCY);
+ boolean isChrome = (chromeFlags & nsIWebBrowserChrome.CHROME_OPENAS_CHROME) != 0;
+ if (isChrome) {
+ Shell shell = browser.getShell ();
+ shell.setSize (shell.computeSize (size.x, size.y));
+ }
+ return XPCOM.NS_OK;
+}
+
+int ShowAsModal () {
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = XPCOM.NS_GetServiceManager (result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+
+ nsIServiceManager serviceManager = new nsIServiceManager (result[0]);
+ result[0] = 0;
+ byte[] aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_CONTEXTSTACK_CONTRACTID, true);
+ rc = serviceManager.GetServiceByContractID (aContractID, nsIJSContextStack.NS_IJSCONTEXTSTACK_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+ serviceManager.Release ();
+
+ nsIJSContextStack stack = new nsIJSContextStack (result[0]);
+ result[0] = 0;
+ rc = stack.Push (0);
+ if (rc != XPCOM.NS_OK) error (rc);
+
+ Shell shell = browser.getShell ();
+ Display display = browser.getDisplay ();
+ while (!shell.isDisposed ()) {
+ if (!display.readAndDispatch ()) display.sleep ();
+ }
+
+ rc = stack.Pop (result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ stack.Release ();
+ return XPCOM.NS_OK;
+}
+
+int IsWindowModal (int /*long*/ retval) {
+ int result = (chromeFlags & nsIWebBrowserChrome.CHROME_MODAL) != 0 ? 1 : 0;
+ XPCOM.memmove (retval, new int[] {result}, 4); /* PRBool */
+ return XPCOM.NS_OK;
+}
+
+int ExitModalEventLoop (int aStatus) {
+ return XPCOM.NS_OK;
+}
+
+/* nsIEmbeddingSiteWindow */
+
+int SetDimensions (int flags, int x, int y, int cx, int cy) {
+ if ((flags & nsIEmbeddingSiteWindow.DIM_FLAGS_POSITION) != 0) {
+ location = new Point (x, y);
+ browser.getShell ().setLocation (x, y);
+ }
+ if ((flags & nsIEmbeddingSiteWindow.DIM_FLAGS_SIZE_INNER) != 0) {
+ browser.setSize (cx, cy);
+ }
+ if ((flags & nsIEmbeddingSiteWindow.DIM_FLAGS_SIZE_OUTER) != 0) {
+ browser.getShell ().setSize (cx, cy);
+ }
+ return XPCOM.NS_OK;
+}
+
+int GetDimensions (int flags, int /*long*/ x, int /*long*/ y, int /*long*/ cx, int /*long*/ cy) {
+ if ((flags & nsIEmbeddingSiteWindow.DIM_FLAGS_POSITION) != 0) {
+ Point location = browser.getShell ().getLocation ();
+ if (x != 0) C.memmove (x, new int[] {location.x}, 4); /* PRInt32 */
+ if (y != 0) C.memmove (y, new int[] {location.y}, 4); /* PRInt32 */
+ }
+ if ((flags & nsIEmbeddingSiteWindow.DIM_FLAGS_SIZE_INNER) != 0) {
+ Point size = browser.getSize ();
+ if (cx != 0) C.memmove (cx, new int[] {size.x}, 4); /* PRInt32 */
+ if (cy != 0) C.memmove (cy, new int[] {size.y}, 4); /* PRInt32 */
+ }
+ if ((flags & nsIEmbeddingSiteWindow.DIM_FLAGS_SIZE_OUTER) != 0) {
+ Point size = browser.getShell().getSize ();
+ if (cx != 0) C.memmove (cx, new int[] {size.x}, 4); /* PRInt32 */
+ if (cy != 0) C.memmove (cy, new int[] {size.y}, 4); /* PRInt32 */
+ }
+ return XPCOM.NS_OK;
+}
+
+int SetFocus () {
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = webBrowser.QueryInterface (nsIBaseWindow.NS_IBASEWINDOW_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_ERROR_NO_INTERFACE);
+
+ nsIBaseWindow baseWindow = new nsIBaseWindow (result[0]);
+ rc = baseWindow.SetFocus ();
+ if (rc != XPCOM.NS_OK) error (rc);
+ baseWindow.Release ();
+
+ /*
+ * Note. Mozilla notifies here that one of the children took
+ * focus. This could or should be used to fire an SWT.FOCUS_IN
+ * event on Browser focus listeners.
+ */
+ return XPCOM.NS_OK;
+}
+
+int GetVisibility (int /*long*/ aVisibility) {
+ boolean visible = browser.isVisible () && !browser.getShell ().getMinimized ();
+ XPCOM.memmove (aVisibility, new int[] {visible ? 1 : 0}, 4); /* PRBool */
+ return XPCOM.NS_OK;
+}
+
+int SetVisibility (int aVisibility) {
+ if (isChild) {
+ WindowEvent event = new WindowEvent (browser);
+ event.display = browser.getDisplay ();
+ event.widget = browser;
+ if (aVisibility != 0) {
+ /*
+ * Bug in Mozilla. When the JavaScript window.open is executed, Mozilla
+ * fires multiple SetVisibility 1 notifications. The workaround is
+ * to ignore subsequent notifications.
+ */
+ if (!visible) {
+ visible = true;
+ event.location = location;
+ event.size = size;
+ event.addressBar = (chromeFlags & nsIWebBrowserChrome.CHROME_LOCATIONBAR) != 0;
+ /* Feature of OSX. The menu bar is always displayed. */
+ boolean isOSX = Platform.PLATFORM.equals ("cocoa") || Platform.PLATFORM.equals ("carbon");
+ event.menuBar = isOSX || (chromeFlags & nsIWebBrowserChrome.CHROME_MENUBAR) != 0;
+ event.statusBar = (chromeFlags & nsIWebBrowserChrome.CHROME_STATUSBAR) != 0;
+ event.toolBar = (chromeFlags & nsIWebBrowserChrome.CHROME_TOOLBAR) != 0;
+ for (int i = 0; i < visibilityWindowListeners.length; i++) {
+ visibilityWindowListeners[i].show (event);
+ }
+ location = null;
+ size = null;
+ }
+ } else {
+ visible = false;
+ for (int i = 0; i < visibilityWindowListeners.length; i++) {
+ visibilityWindowListeners[i].hide (event);
+ }
+ }
+ } else {
+ visible = aVisibility != 0;
+ }
+ return XPCOM.NS_OK;
+}
+
+int GetTitle (int /*long*/ aTitle) {
+ return XPCOM.NS_OK;
+}
+
+int SetTitle (int /*long*/ aTitle) {
+ if (titleListeners.length == 0) return XPCOM.NS_OK;
+ TitleEvent event = new TitleEvent (browser);
+ event.display = browser.getDisplay ();
+ event.widget = browser;
+ /*
+ * To be consistent with other platforms the title event should
+ * contain the page's url if the page does not contain a <title>
+ * tag.
+ */
+ int length = XPCOM.strlen_PRUnichar (aTitle);
+ if (length > 0) {
+ char[] dest = new char[length];
+ XPCOM.memmove (dest, aTitle, length * 2);
+ event.title = new String (dest);
+ } else {
+ event.title = getUrl ();
+ }
+ for (int i = 0; i < titleListeners.length; i++) {
+ titleListeners[i].changed (event);
+ }
+ return XPCOM.NS_OK;
+}
+
+int GetSiteWindow (int /*long*/ aSiteWindow) {
+ /*
+ * Note. The handle is expected to be an HWND on Windows and
+ * a GtkWidget* on GTK. This callback is invoked on Windows
+ * when the javascript window.print is invoked and the print
+ * dialog comes up. If no handle is returned, the print dialog
+ * does not come up on this platform.
+ */
+ XPCOM.memmove (aSiteWindow, new int /*long*/[] {embedHandle}, C.PTR_SIZEOF);
+ return XPCOM.NS_OK;
+}
+
+/* nsIWebBrowserChromeFocus */
+
+int FocusNextElement () {
+ /*
+ * Bug in Mozilla embedding API. Mozilla takes back the focus after sending
+ * this event. This prevents tabbing out of Mozilla. This behaviour can be reproduced
+ * with the Mozilla application TestGtkEmbed. The workaround is to
+ * send the traversal notification after this callback returns.
+ */
+ browser.getDisplay ().asyncExec (new Runnable () {
+ public void run () {
+ if (browser.isDisposed ()) return;
+ browser.traverse (SWT.TRAVERSE_TAB_NEXT);
+ }
+ });
+ return XPCOM.NS_OK;
+}
+
+int FocusPrevElement () {
+ /*
+ * Bug in Mozilla embedding API. Mozilla takes back the focus after sending
+ * this event. This prevents tabbing out of Mozilla. This behaviour can be reproduced
+ * with the Mozilla application TestGtkEmbed. The workaround is to
+ * send the traversal notification after this callback returns.
+ */
+ browser.getDisplay ().asyncExec (new Runnable () {
+ public void run () {
+ if (browser.isDisposed ()) return;
+ browser.traverse (SWT.TRAVERSE_TAB_PREVIOUS);
+ }
+ });
+ return XPCOM.NS_OK;
+}
+
+/* nsIContextMenuListener */
+
+int OnShowContextMenu (int aContextFlags, int /*long*/ aEvent, int /*long*/ aNode) {
+ nsIDOMEvent domEvent = new nsIDOMEvent (aEvent);
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = domEvent.QueryInterface (nsIDOMMouseEvent.NS_IDOMMOUSEEVENT_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+
+ nsIDOMMouseEvent domMouseEvent = new nsIDOMMouseEvent (result[0]);
+ int[] aScreenX = new int[1], aScreenY = new int[1];
+ rc = domMouseEvent.GetScreenX (aScreenX);
+ if (rc != XPCOM.NS_OK) error (rc);
+ rc = domMouseEvent.GetScreenY (aScreenY);
+ if (rc != XPCOM.NS_OK) error (rc);
+ domMouseEvent.Release ();
+
+ Event event = new Event ();
+ event.x = aScreenX[0];
+ event.y = aScreenY[0];
+ browser.notifyListeners (SWT.MenuDetect, event);
+ if (!event.doit || browser.isDisposed ()) return XPCOM.NS_OK;
+ Menu menu = browser.getMenu ();
+ if (menu != null && !menu.isDisposed ()) {
+ if (aScreenX[0] != event.x || aScreenY[0] != event.y) {
+ menu.setLocation (event.x, event.y);
+ }
+ menu.setVisible (true);
+ }
+ return XPCOM.NS_OK;
+}
+
+/* nsIURIContentListener */
+
+int OnStartURIOpen (int /*long*/ aURI, int /*long*/ retval) {
+ authCount = 0;
+
+ nsIURI location = new nsIURI (aURI);
+ int /*long*/ aSpec = XPCOM.nsEmbedCString_new ();
+ location.GetSpec (aSpec);
+ int length = XPCOM.nsEmbedCString_Length (aSpec);
+ int /*long*/ buffer = XPCOM.nsEmbedCString_get (aSpec);
+ buffer = XPCOM.nsEmbedCString_get (aSpec);
+ byte[] dest = new byte[length];
+ XPCOM.memmove (dest, buffer, length);
+ XPCOM.nsEmbedCString_delete (aSpec);
+ String value = new String (dest);
+ boolean doit = true;
+ if (request == 0) {
+ /*
+ * listeners should not be notified of internal transitions like "javascript:..."
+ * because this is an implementation side-effect, not a true navigate
+ */
+ if (!value.startsWith (PREFIX_JAVASCRIPT)) {
+ if (locationListeners.length > 0) {
+ LocationEvent event = new LocationEvent (browser);
+ event.display = browser.getDisplay();
+ event.widget = browser;
+ event.location = value;
+ /*
+ * If the URI indicates that the page is being rendered from memory
+ * (via setText()) then set it to about:blank to be consistent with IE.
+ */
+ if (event.location.equals (URI_FROMMEMORY)) event.location = ABOUT_BLANK;
+ event.doit = doit;
+ for (int i = 0; i < locationListeners.length; i++) {
+ locationListeners[i].changing (event);
+ }
+ doit = event.doit && !browser.isDisposed();
+ }
+
+ if (doit) {
+ if (jsEnabledChanged) {
+ jsEnabledChanged = false;
+
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = webBrowser.QueryInterface (nsIWebBrowserSetup.NS_IWEBBROWSERSETUP_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+
+ nsIWebBrowserSetup setup = new nsIWebBrowserSetup (result[0]);
+ result[0] = 0;
+ rc = setup.SetProperty (nsIWebBrowserSetup.SETUP_ALLOW_JAVASCRIPT, jsEnabled ? 1 : 0);
+ if (rc != XPCOM.NS_OK) error (rc);
+ setup.Release ();
+ }
+ lastNavigateURL = value;
+ }
+ }
+ }
+ XPCOM.memmove (retval, new int[] {doit ? 0 : 1}, 4); /* PRBool */
+ return XPCOM.NS_OK;
+}
+
+int DoContent (int /*long*/ aContentType, int aIsContentPreferred, int /*long*/ aRequest, int /*long*/ aContentHandler, int /*long*/ retval) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int IsPreferred (int /*long*/ aContentType, int /*long*/ aDesiredContentType, int /*long*/ retval) {
+ boolean preferred = false;
+ int size = XPCOM.strlen (aContentType);
+ if (size > 0) {
+ byte[] typeBytes = new byte[size + 1];
+ XPCOM.memmove (typeBytes, aContentType, size);
+ String contentType = new String (typeBytes, 0, size);
+
+ /* do not attempt to handle known problematic content types */
+ if (!contentType.equals (XPCOM.CONTENT_MAYBETEXT) && !contentType.equals (XPCOM.CONTENT_MULTIPART)) {
+ /* determine whether browser can handle the content type */
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = XPCOM.NS_GetServiceManager (result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+ nsIServiceManager serviceManager = new nsIServiceManager (result[0]);
+ result[0] = 0;
+
+ /* First try to use the nsIWebNavigationInfo if it's available (>= mozilla 1.8) */
+ byte[] aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_WEBNAVIGATIONINFO_CONTRACTID, true);
+ rc = serviceManager.GetServiceByContractID (aContractID, nsIWebNavigationInfo.NS_IWEBNAVIGATIONINFO_IID, result);
+ if (rc == XPCOM.NS_OK) {
+ byte[] bytes = MozillaDelegate.wcsToMbcs (null, contentType, true);
+ int /*long*/ typePtr = XPCOM.nsEmbedCString_new (bytes, bytes.length);
+ nsIWebNavigationInfo info = new nsIWebNavigationInfo (result[0]);
+ result[0] = 0;
+ int[] isSupportedResult = new int[1]; /* PRUint32 */
+ rc = info.IsTypeSupported (typePtr, 0, isSupportedResult);
+ if (rc != XPCOM.NS_OK) error (rc);
+ info.Release ();
+ XPCOM.nsEmbedCString_delete (typePtr);
+ preferred = isSupportedResult[0] != 0;
+ } else {
+ /* nsIWebNavigationInfo is not available, so do the type lookup */
+ result[0] = 0;
+ rc = serviceManager.GetService (XPCOM.NS_CATEGORYMANAGER_CID, nsICategoryManager.NS_ICATEGORYMANAGER_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+
+ nsICategoryManager categoryManager = new nsICategoryManager (result[0]);
+ result[0] = 0;
+ byte[] categoryBytes = MozillaDelegate.wcsToMbcs (null, "Gecko-Content-Viewers", true); //$NON-NLS-1$
+ rc = categoryManager.GetCategoryEntry (categoryBytes, typeBytes, result);
+ categoryManager.Release ();
+ /* if no viewer for the content type is registered then rc == XPCOM.NS_ERROR_NOT_AVAILABLE */
+ preferred = rc == XPCOM.NS_OK;
+ }
+ serviceManager.Release ();
+ }
+ }
+
+ XPCOM.memmove(retval, new int[] {preferred ? 1 : 0}, 4); /* PRBool */
+ if (preferred) {
+ XPCOM.memmove (aDesiredContentType, new int /*long*/[] {0}, C.PTR_SIZEOF);
+ }
+ return XPCOM.NS_OK;
+}
+
+int CanHandleContent (int /*long*/ aContentType, int aIsContentPreferred, int /*long*/ aDesiredContentType, int /*long*/ retval) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int GetLoadCookie (int /*long*/ aLoadCookie) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int SetLoadCookie (int /*long*/ aLoadCookie) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int GetParentContentListener (int /*long*/ aParentContentListener) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int SetParentContentListener (int /*long*/ aParentContentListener) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+/* nsITooltipListener */
+
+int OnShowTooltip (int aXCoords, int aYCoords, int /*long*/ aTipText) {
+ int length = XPCOM.strlen_PRUnichar (aTipText);
+ char[] dest = new char[length];
+ XPCOM.memmove (dest, aTipText, length * 2);
+ String text = new String (dest);
+ if (tip != null && !tip.isDisposed ()) tip.dispose ();
+ Display display = browser.getDisplay ();
+ Shell parent = browser.getShell ();
+ tip = new Shell (parent, SWT.ON_TOP);
+ tip.setLayout (new FillLayout());
+ Label label = new Label (tip, SWT.CENTER);
+ label.setForeground (display.getSystemColor (SWT.COLOR_INFO_FOREGROUND));
+ label.setBackground (display.getSystemColor (SWT.COLOR_INFO_BACKGROUND));
+ label.setText (text);
+ /*
+ * Bug in Mozilla embedded API. Tooltip coordinates are wrong for
+ * elements inside an inline frame (IFrame tag). The workaround is
+ * to position the tooltip based on the mouse cursor location.
+ */
+ Point point = display.getCursorLocation ();
+ /* Assuming cursor is 21x21 because this is the size of
+ * the arrow cursor on Windows
+ */
+ point.y += 21;
+ tip.setLocation (point);
+ tip.pack ();
+ tip.setVisible (true);
+ return XPCOM.NS_OK;
+}
+
+int OnHideTooltip () {
+ if (tip != null && !tip.isDisposed ()) tip.dispose ();
+ tip = null;
+ return XPCOM.NS_OK;
+}
+
+/* nsIDOMEventListener */
+
+int HandleEvent (int /*long*/ event) {
+ nsIDOMEvent domEvent = new nsIDOMEvent (event);
+
+ int /*long*/ type = XPCOM.nsEmbedString_new ();
+ int rc = domEvent.GetType (type);
+ if (rc != XPCOM.NS_OK) error (rc);
+ int length = XPCOM.nsEmbedString_Length (type);
+ int /*long*/ buffer = XPCOM.nsEmbedString_get (type);
+ char[] chars = new char[length];
+ XPCOM.memmove (chars, buffer, length * 2);
+ String typeString = new String (chars);
+ XPCOM.nsEmbedString_delete (type);
+
+ if (XPCOM.DOMEVENT_UNLOAD.equals (typeString)) {
+ int /*long*/[] result = new int /*long*/[1];
+ rc = domEvent.GetCurrentTarget (result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+
+ nsIDOMEventTarget target = new nsIDOMEventTarget (result[0]);
+ unhookDOMListeners (target);
+ target.Release ();
+ return XPCOM.NS_OK;
+ }
+
+ if (XPCOM.DOMEVENT_FOCUS.equals (typeString)) {
+ delegate.handleFocus ();
+ return XPCOM.NS_OK;
+ }
+
+ if (XPCOM.DOMEVENT_KEYDOWN.equals (typeString)) {
+ int /*long*/[] result = new int /*long*/[1];
+ rc = domEvent.QueryInterface (nsIDOMKeyEvent.NS_IDOMKEYEVENT_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+ nsIDOMKeyEvent domKeyEvent = new nsIDOMKeyEvent (result[0]);
+ result[0] = 0;
+
+ int[] aKeyCode = new int[1]; /* PRUint32 */
+ rc = domKeyEvent.GetKeyCode (aKeyCode);
+ if (rc != XPCOM.NS_OK) error (rc);
+ int keyCode = translateKey (aKeyCode[0]);
+
+ /*
+ * if keyCode == lastKeyCode then either a repeating key like Shift
+ * is being held or a key for which key events are not sent has been
+ * pressed. In both of these cases a KeyDown should not be sent.
+ */
+ if (keyCode != lastKeyCode) {
+ lastKeyCode = keyCode;
+ switch (keyCode) {
+ case SWT.SHIFT:
+ case SWT.CONTROL:
+ case SWT.ALT:
+ case SWT.CAPS_LOCK:
+ case SWT.NUM_LOCK:
+ case SWT.SCROLL_LOCK:
+ case SWT.COMMAND: {
+ /* keypress events will not be received for these keys, so send KeyDowns for them now */
+ int[] aAltKey = new int[1], aCtrlKey = new int[1], aShiftKey = new int[1], aMetaKey = new int[1]; /* PRBool */
+ rc = domKeyEvent.GetAltKey (aAltKey);
+ if (rc != XPCOM.NS_OK) error (rc);
+ rc = domKeyEvent.GetCtrlKey (aCtrlKey);
+ if (rc != XPCOM.NS_OK) error (rc);
+ rc = domKeyEvent.GetShiftKey (aShiftKey);
+ if (rc != XPCOM.NS_OK) error (rc);
+ rc = domKeyEvent.GetMetaKey (aMetaKey);
+ if (rc != XPCOM.NS_OK) error (rc);
+
+ Event keyEvent = new Event ();
+ keyEvent.widget = browser;
+ keyEvent.type = SWT.KeyDown;
+ keyEvent.keyCode = keyCode;
+ keyEvent.stateMask = (aAltKey[0] != 0 ? SWT.ALT : 0) | (aCtrlKey[0] != 0 ? SWT.CTRL : 0) | (aShiftKey[0] != 0 ? SWT.SHIFT : 0) | (aMetaKey[0] != 0 ? SWT.COMMAND : 0);
+ keyEvent.stateMask &= ~keyCode; /* remove current keydown if it's a state key */
+ browser.notifyListeners (keyEvent.type, keyEvent);
+ if (!keyEvent.doit || browser.isDisposed ()) {
+ domEvent.PreventDefault ();
+ }
+ break;
+ }
+ default: {
+ /*
+ * If the keydown has Meta (but not Meta+Ctrl) as a modifier then send a KeyDown event for it here
+ * because a corresponding keypress event will not be received for it from the DOM. If the keydown
+ * does not have Meta as a modifier, or has Meta+Ctrl as a modifier, then then do nothing here
+ * because its KeyDown event will be sent from the keypress listener.
+ */
+ int[] aMetaKey = new int[1]; /* PRBool */
+ rc = domKeyEvent.GetMetaKey (aMetaKey);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (aMetaKey[0] != 0) {
+ int[] aCtrlKey = new int[1]; /* PRBool */
+ rc = domKeyEvent.GetCtrlKey (aCtrlKey);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (aCtrlKey[0] == 0) {
+ int[] aAltKey = new int[1], aShiftKey = new int[1]; /* PRBool */
+ rc = domKeyEvent.GetAltKey (aAltKey);
+ if (rc != XPCOM.NS_OK) error (rc);
+ rc = domKeyEvent.GetShiftKey (aShiftKey);
+ if (rc != XPCOM.NS_OK) error (rc);
+
+ Event keyEvent = new Event ();
+ keyEvent.widget = browser;
+ keyEvent.type = SWT.KeyDown;
+ keyEvent.keyCode = lastKeyCode;
+ keyEvent.stateMask = (aAltKey[0] != 0 ? SWT.ALT : 0) | (aCtrlKey[0] != 0? SWT.CTRL : 0) | (aShiftKey[0] != 0? SWT.SHIFT : 0) | (aMetaKey[0] != 0? SWT.COMMAND : 0);
+ browser.notifyListeners (keyEvent.type, keyEvent);
+ if (!keyEvent.doit || browser.isDisposed ()) {
+ domEvent.PreventDefault ();
+ }
+ }
+ }
+ }
+ }
+ }
+
+ domKeyEvent.Release ();
+ return XPCOM.NS_OK;
+ }
+
+ if (XPCOM.DOMEVENT_KEYPRESS.equals (typeString)) {
+ /*
+ * if keydown could not determine a keycode for this key then it's a
+ * key for which key events are not sent (eg.- the Windows key)
+ */
+ if (lastKeyCode == 0) return XPCOM.NS_OK;
+
+ /*
+ * On linux only, unexpected keypress events are received for some
+ * modifier keys. The workaround is to ignore these events since
+ * KeyDown events are sent for these keys in the keydown listener.
+ */
+ switch (lastKeyCode) {
+ case SWT.CAPS_LOCK:
+ case SWT.NUM_LOCK:
+ case SWT.SCROLL_LOCK: return XPCOM.NS_OK;
+ }
+
+ int /*long*/[] result = new int /*long*/[1];
+ rc = domEvent.QueryInterface (nsIDOMKeyEvent.NS_IDOMKEYEVENT_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+ nsIDOMKeyEvent domKeyEvent = new nsIDOMKeyEvent (result[0]);
+ result[0] = 0;
+
+ int[] aAltKey = new int[1], aCtrlKey = new int[1], aShiftKey = new int[1], aMetaKey = new int[1]; /* PRBool */
+ rc = domKeyEvent.GetAltKey (aAltKey);
+ if (rc != XPCOM.NS_OK) error (rc);
+ rc = domKeyEvent.GetCtrlKey (aCtrlKey);
+ if (rc != XPCOM.NS_OK) error (rc);
+ rc = domKeyEvent.GetShiftKey (aShiftKey);
+ if (rc != XPCOM.NS_OK) error (rc);
+ rc = domKeyEvent.GetMetaKey (aMetaKey);
+ if (rc != XPCOM.NS_OK) error (rc);
+ domKeyEvent.Release ();
+
+ int[] aCharCode = new int[1]; /* PRUint32 */
+ rc = domKeyEvent.GetCharCode (aCharCode);
+ if (rc != XPCOM.NS_OK) error (rc);
+ lastCharCode = aCharCode[0];
+ if (lastCharCode == 0) {
+ switch (lastKeyCode) {
+ case SWT.TAB: lastCharCode = SWT.TAB; break;
+ case SWT.CR: lastCharCode = SWT.CR; break;
+ case SWT.BS: lastCharCode = SWT.BS; break;
+ case SWT.ESC: lastCharCode = SWT.ESC; break;
+ case SWT.DEL: lastCharCode = SWT.DEL; break;
+ }
+ }
+ if (aCtrlKey[0] != 0 && (0 <= lastCharCode && lastCharCode <= 0x7F)) {
+ if ('a' <= lastCharCode && lastCharCode <= 'z') lastCharCode -= 'a' - 'A';
+ if (64 <= lastCharCode && lastCharCode <= 95) lastCharCode -= 64;
+ }
+
+ Event keyEvent = new Event ();
+ keyEvent.widget = browser;
+ keyEvent.type = SWT.KeyDown;
+ keyEvent.keyCode = lastKeyCode;
+ keyEvent.character = (char)lastCharCode;
+ keyEvent.stateMask = (aAltKey[0] != 0 ? SWT.ALT : 0) | (aCtrlKey[0] != 0 ? SWT.CTRL : 0) | (aShiftKey[0] != 0 ? SWT.SHIFT : 0) | (aMetaKey[0] != 0 ? SWT.COMMAND : 0);
+ browser.notifyListeners (keyEvent.type, keyEvent);
+ if (!keyEvent.doit || browser.isDisposed ()) {
+ domEvent.PreventDefault ();
+ }
+ return XPCOM.NS_OK;
+ }
+
+ if (XPCOM.DOMEVENT_KEYUP.equals (typeString)) {
+ int /*long*/[] result = new int /*long*/[1];
+ rc = domEvent.QueryInterface (nsIDOMKeyEvent.NS_IDOMKEYEVENT_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+ nsIDOMKeyEvent domKeyEvent = new nsIDOMKeyEvent (result[0]);
+ result[0] = 0;
+
+ int[] aKeyCode = new int[1]; /* PRUint32 */
+ rc = domKeyEvent.GetKeyCode (aKeyCode);
+ if (rc != XPCOM.NS_OK) error (rc);
+ int keyCode = translateKey (aKeyCode[0]);
+ if (keyCode == 0) {
+ /* indicates a key for which key events are not sent */
+ domKeyEvent.Release ();
+ return XPCOM.NS_OK;
+ }
+ if (keyCode != lastKeyCode) {
+ /* keyup does not correspond to the last keydown */
+ lastKeyCode = keyCode;
+ lastCharCode = 0;
+ }
+
+ int[] aAltKey = new int[1], aCtrlKey = new int[1], aShiftKey = new int[1], aMetaKey = new int[1]; /* PRBool */
+ rc = domKeyEvent.GetAltKey (aAltKey);
+ if (rc != XPCOM.NS_OK) error (rc);
+ rc = domKeyEvent.GetCtrlKey (aCtrlKey);
+ if (rc != XPCOM.NS_OK) error (rc);
+ rc = domKeyEvent.GetShiftKey (aShiftKey);
+ if (rc != XPCOM.NS_OK) error (rc);
+ rc = domKeyEvent.GetMetaKey (aMetaKey);
+ if (rc != XPCOM.NS_OK) error (rc);
+ domKeyEvent.Release ();
+
+ Event keyEvent = new Event ();
+ keyEvent.widget = browser;
+ keyEvent.type = SWT.KeyUp;
+ keyEvent.keyCode = lastKeyCode;
+ keyEvent.character = (char)lastCharCode;
+ keyEvent.stateMask = (aAltKey[0] != 0 ? SWT.ALT : 0) | (aCtrlKey[0] != 0 ? SWT.CTRL : 0) | (aShiftKey[0] != 0 ? SWT.SHIFT : 0) | (aMetaKey[0] != 0 ? SWT.COMMAND : 0);
+ switch (lastKeyCode) {
+ case SWT.SHIFT:
+ case SWT.CONTROL:
+ case SWT.ALT:
+ case SWT.COMMAND: {
+ keyEvent.stateMask |= lastKeyCode;
+ }
+ }
+ browser.notifyListeners (keyEvent.type, keyEvent);
+ if (!keyEvent.doit || browser.isDisposed ()) {
+ domEvent.PreventDefault ();
+ }
+ lastKeyCode = lastCharCode = 0;
+ return XPCOM.NS_OK;
+ }
+
+ /* mouse event */
+
+ int /*long*/[] result = new int /*long*/[1];
+ rc = domEvent.QueryInterface (nsIDOMMouseEvent.NS_IDOMMOUSEEVENT_IID, result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] == 0) error (XPCOM.NS_NOINTERFACE);
+ nsIDOMMouseEvent domMouseEvent = new nsIDOMMouseEvent (result[0]);
+ result[0] = 0;
+
+ /*
+ * MouseOver and MouseOut events are fired any time the mouse enters or exits
+ * any element within the Browser. To ensure that SWT events are only
+ * fired for mouse movements into or out of the Browser, do not fire an
+ * event if the element being exited (on MouseOver) or entered (on MouseExit)
+ * is within the Browser.
+ */
+ if (XPCOM.DOMEVENT_MOUSEOVER.equals (typeString) || XPCOM.DOMEVENT_MOUSEOUT.equals (typeString)) {
+ rc = domMouseEvent.GetRelatedTarget (result);
+ if (rc != XPCOM.NS_OK) error (rc);
+ if (result[0] != 0) {
+ domMouseEvent.Release ();
+ return XPCOM.NS_OK;
+ }
+ }
+
+ int[] aClientX = new int[1], aClientY = new int[1], aDetail = new int[1]; /* PRInt32 */
+ rc = domMouseEvent.GetClientX (aClientX);
+ if (rc != XPCOM.NS_OK) error (rc);
+ rc = domMouseEvent.GetClientY (aClientY);
+ if (rc != XPCOM.NS_OK) error (rc);
+ rc = domMouseEvent.GetDetail (aDetail);
+ if (rc != XPCOM.NS_OK) error (rc);
+ short[] aButton = new short[1]; /* PRUint16 */
+ rc = domMouseEvent.GetButton (aButton);
+ if (rc != XPCOM.NS_OK) error (rc);
+ int[] aAltKey = new int[1], aCtrlKey = new int[1], aShiftKey = new int[1], aMetaKey = new int[1]; /* PRBool */
+ rc = domMouseEvent.GetAltKey (aAltKey);
+ if (rc != XPCOM.NS_OK) error (rc);
+ rc = domMouseEvent.GetCtrlKey (aCtrlKey);
+ if (rc != XPCOM.NS_OK) error (rc);
+ rc = domMouseEvent.GetShiftKey (aShiftKey);
+ if (rc != XPCOM.NS_OK) error (rc);
+ rc = domMouseEvent.GetMetaKey (aMetaKey);
+ if (rc != XPCOM.NS_OK) error (rc);
+ domMouseEvent.Release ();
+
+ Event mouseEvent = new Event ();
+ mouseEvent.widget = browser;
+ mouseEvent.x = aClientX[0]; mouseEvent.y = aClientY[0];
+ mouseEvent.stateMask = (aAltKey[0] != 0 ? SWT.ALT : 0) | (aCtrlKey[0] != 0 ? SWT.CTRL : 0) | (aShiftKey[0] != 0 ? SWT.SHIFT : 0) | (aMetaKey[0] != 0 ? SWT.COMMAND : 0);
+
+ if (XPCOM.DOMEVENT_MOUSEDOWN.equals (typeString)) {
+ delegate.handleMouseDown ();
+ mouseEvent.type = SWT.MouseDown;
+ mouseEvent.button = aButton[0] + 1;
+ mouseEvent.count = aDetail[0];
+ } else if (XPCOM.DOMEVENT_MOUSEUP.equals (typeString)) {
+ /*
+ * Bug on OSX. For some reason multiple mouseup events come from the DOM
+ * when button 3 is released on OSX. The first of these events has a count
+ * detail and the others do not. The workaround is to not fire received
+ * button 3 mouseup events that do not have a count since mouse events
+ * without a click count are not valid.
+ */
+ int button = aButton[0] + 1;
+ int count = aDetail[0];
+ if (count == 0 && button == 3) return XPCOM.NS_OK;
+ mouseEvent.type = SWT.MouseUp;
+ mouseEvent.button = button;
+ mouseEvent.count = count;
+ } else if (XPCOM.DOMEVENT_MOUSEMOVE.equals (typeString)) {
+ mouseEvent.type = SWT.MouseMove;
+ } else if (XPCOM.DOMEVENT_MOUSEWHEEL.equals (typeString)) {
+ mouseEvent.type = SWT.MouseWheel;
+ mouseEvent.count = -aDetail[0];
+ } else if (XPCOM.DOMEVENT_MOUSEOVER.equals (typeString)) {
+ mouseEvent.type = SWT.MouseEnter;
+ } else if (XPCOM.DOMEVENT_MOUSEOUT.equals (typeString)) {
+ mouseEvent.type = SWT.MouseExit;
+ } else if (XPCOM.DOMEVENT_MOUSEDRAG.equals (typeString)) {
+ mouseEvent.type = SWT.DragDetect;
+ mouseEvent.button = aButton[0] + 1;
+ switch (mouseEvent.button) {
+ case 1: mouseEvent.stateMask |= SWT.BUTTON1; break;
+ case 2: mouseEvent.stateMask |= SWT.BUTTON2; break;
+ case 3: mouseEvent.stateMask |= SWT.BUTTON3; break;
+ case 4: mouseEvent.stateMask |= SWT.BUTTON4; break;
+ case 5: mouseEvent.stateMask |= SWT.BUTTON5; break;
+ }
+ }
+
+ browser.notifyListeners (mouseEvent.type, mouseEvent);
+ if (browser.isDisposed ()) return XPCOM.NS_OK;
+ if (aDetail[0] == 2 && XPCOM.DOMEVENT_MOUSEDOWN.equals (typeString)) {
+ mouseEvent = new Event ();
+ mouseEvent.widget = browser;
+ mouseEvent.x = aClientX[0]; mouseEvent.y = aClientY[0];
+ mouseEvent.stateMask = (aAltKey[0] != 0 ? SWT.ALT : 0) | (aCtrlKey[0] != 0 ? SWT.CTRL : 0) | (aShiftKey[0] != 0 ? SWT.SHIFT : 0) | (aMetaKey[0] != 0 ? SWT.COMMAND : 0);
+ mouseEvent.type = SWT.MouseDoubleClick;
+ mouseEvent.button = aButton[0] + 1;
+ mouseEvent.count = aDetail[0];
+ browser.notifyListeners (mouseEvent.type, mouseEvent);
+ }
+ return XPCOM.NS_OK;
+}
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/PromptDialog.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/PromptDialog.java
new file mode 100644
index 0000000000..f4558d082f
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/PromptDialog.java
@@ -0,0 +1,294 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swt.browser;
+
+import org.eclipse.swt.*;
+import org.eclipse.swt.layout.*;
+import org.eclipse.swt.widgets.*;
+
+class PromptDialog extends Dialog {
+
+ PromptDialog(Shell parent, int style) {
+ super(parent, style);
+ }
+
+ PromptDialog(Shell parent) {
+ this(parent, 0);
+ }
+
+ void alertCheck(String title, String text, String check, final int[] checkValue) {
+ Shell parent = getParent();
+ final Shell shell = new Shell(parent, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
+ if (title != null) shell.setText(title);
+ GridLayout gridLayout = new GridLayout();
+ shell.setLayout(gridLayout);
+ Label label = new Label(shell, SWT.WRAP);
+ label.setText(text);
+ GridData data = new GridData();
+ Monitor monitor = parent.getMonitor();
+ int maxWidth = monitor.getBounds().width * 2 / 3;
+ int width = label.computeSize(SWT.DEFAULT, SWT.DEFAULT).x;
+ data.widthHint = Math.min(width, maxWidth);
+ data.horizontalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace = true;
+ label.setLayoutData (data);
+
+ final Button checkButton = check != null ? new Button(shell, SWT.CHECK) : null;
+ if (checkButton != null) {
+ checkButton.setText(check);
+ checkButton.setSelection(checkValue[0] != 0);
+ data = new GridData ();
+ data.horizontalAlignment = GridData.BEGINNING;
+ checkButton.setLayoutData (data);
+ }
+ Button okButton = new Button(shell, SWT.PUSH);
+ okButton.setText(SWT.getMessage("SWT_OK")); //$NON-NLS-1$
+ data = new GridData ();
+ data.horizontalAlignment = GridData.CENTER;
+ okButton.setLayoutData (data);
+ okButton.addListener(SWT.Selection, new Listener() {
+ public void handleEvent(Event event) {
+ if (checkButton != null) checkValue[0] = checkButton.getSelection() ? 1 : 0;
+ shell.close();
+ }
+ });
+
+ shell.pack();
+ shell.open();
+ Display display = parent.getDisplay();
+ while (!shell.isDisposed()) {
+ if (!display.readAndDispatch()) display.sleep();
+ }
+ }
+
+ void confirmEx(String title, String text, String check, String button0, String button1, String button2, int defaultIndex, final int[] checkValue, final int[] result) {
+ Shell parent = getParent();
+ final Shell shell = new Shell(parent, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
+ shell.setText(title);
+ GridLayout gridLayout = new GridLayout();
+ shell.setLayout(gridLayout);
+ Label label = new Label(shell, SWT.WRAP);
+ label.setText(text);
+ GridData data = new GridData();
+ Monitor monitor = parent.getMonitor();
+ int maxWidth = monitor.getBounds().width * 2 / 3;
+ int width = label.computeSize(SWT.DEFAULT, SWT.DEFAULT).x;
+ data.widthHint = Math.min(width, maxWidth);
+ data.horizontalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace = true;
+ label.setLayoutData (data);
+
+ final Button[] buttons = new Button[4];
+ Listener listener = new Listener() {
+ public void handleEvent(Event event) {
+ if (buttons[0] != null) checkValue[0] = buttons[0].getSelection() ? 1 : 0;
+ Widget widget = event.widget;
+ for (int i = 1; i < buttons.length; i++) {
+ if (widget == buttons[i]) {
+ result[0] = i - 1;
+ break;
+ }
+ }
+ shell.close();
+ }
+ };
+ if (check != null) {
+ buttons[0] = new Button(shell, SWT.CHECK);
+ buttons[0].setText(check);
+ buttons[0].setSelection(checkValue[0] != 0);
+ data = new GridData ();
+ data.horizontalAlignment = GridData.BEGINNING;
+ buttons[0].setLayoutData (data);
+ }
+ Composite composite = new Composite(shell, SWT.NONE);
+ data = new GridData();
+ data.horizontalAlignment = GridData.CENTER;
+ composite.setLayoutData (data);
+ GridLayout layout = new GridLayout();
+ layout.makeColumnsEqualWidth = true;
+ composite.setLayout(layout);
+ int buttonCount = 0;
+ if (button0 != null) {
+ buttons[1] = new Button(composite, SWT.PUSH);
+ buttons[1].setText(button0);
+ buttons[1].addListener(SWT.Selection, listener);
+ buttons[1].setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ buttonCount++;
+ }
+ if (button1 != null) {
+ buttons[2] = new Button(composite, SWT.PUSH);
+ buttons[2].setText(button1);
+ buttons[2].addListener(SWT.Selection, listener);
+ buttons[2].setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ buttonCount++;
+ }
+ if (button2 != null) {
+ buttons[3] = new Button(composite, SWT.PUSH);
+ buttons[3].setText(button2);
+ buttons[3].addListener(SWT.Selection, listener);
+ buttons[3].setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ buttonCount++;
+ }
+ layout.numColumns = buttonCount;
+ Button defaultButton = buttons [defaultIndex + 1];
+ if (defaultButton != null) shell.setDefaultButton (defaultButton);
+
+ shell.pack();
+ shell.open();
+ Display display = parent.getDisplay();
+ while (!shell.isDisposed()) {
+ if (!display.readAndDispatch()) display.sleep();
+ }
+ }
+
+ void prompt(String title, String text, String check, final String[] value, final int[] checkValue, final int[] result) {
+ Shell parent = getParent();
+ final Shell shell = new Shell(parent, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
+ if (title != null) shell.setText(title);
+ GridLayout gridLayout = new GridLayout();
+ shell.setLayout(gridLayout);
+ Label label = new Label(shell, SWT.WRAP);
+ label.setText(text);
+ GridData data = new GridData();
+ Monitor monitor = parent.getMonitor();
+ int maxWidth = monitor.getBounds().width * 2 / 3;
+ int width = label.computeSize(SWT.DEFAULT, SWT.DEFAULT).x;
+ data.widthHint = Math.min(width, maxWidth);
+ data.horizontalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace = true;
+ label.setLayoutData (data);
+
+ final Text valueText = new Text(shell, SWT.BORDER);
+ if (value[0] != null) valueText.setText(value[0]);
+ data = new GridData();
+ width = valueText.computeSize(SWT.DEFAULT, SWT.DEFAULT).x;
+ if (width > maxWidth) data.widthHint = maxWidth;
+ data.horizontalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace = true;
+ valueText.setLayoutData(data);
+
+ final Button[] buttons = new Button[3];
+ Listener listener = new Listener() {
+ public void handleEvent(Event event) {
+ if (buttons[0] != null) checkValue[0] = buttons[0].getSelection() ? 1 : 0;
+ value[0] = valueText.getText();
+ result[0] = event.widget == buttons[1] ? 1 : 0;
+ shell.close();
+ }
+ };
+ if (check != null) {
+ buttons[0] = new Button(shell, SWT.CHECK);
+ buttons[0].setText(check);
+ buttons[0].setSelection(checkValue[0] != 0);
+ data = new GridData ();
+ data.horizontalAlignment = GridData.BEGINNING;
+ buttons[0].setLayoutData (data);
+ }
+ Composite composite = new Composite(shell, SWT.NONE);
+ data = new GridData();
+ data.horizontalAlignment = GridData.CENTER;
+ composite.setLayoutData (data);
+ composite.setLayout(new GridLayout(2, true));
+ buttons[1] = new Button(composite, SWT.PUSH);
+ buttons[1].setText(SWT.getMessage("SWT_OK")); //$NON-NLS-1$
+ buttons[1].setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ buttons[1].addListener(SWT.Selection, listener);
+ buttons[2] = new Button(composite, SWT.PUSH);
+ buttons[2].setText(SWT.getMessage("SWT_Cancel")); //$NON-NLS-1$
+ buttons[2].setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ buttons[2].addListener(SWT.Selection, listener);
+
+ shell.pack();
+ shell.open();
+ Display display = parent.getDisplay();
+ while (!shell.isDisposed()) {
+ if (!display.readAndDispatch()) display.sleep();
+ }
+ }
+
+ void promptUsernameAndPassword(String title, String text, String check, final String[] user, final String[] pass, final int[] checkValue, final int[] result) {
+ Shell parent = getParent();
+ final Shell shell = new Shell(parent, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
+ shell.setText(title);
+ GridLayout gridLayout = new GridLayout();
+ shell.setLayout(gridLayout);
+ Label label = new Label(shell, SWT.WRAP);
+ label.setText(text);
+ GridData data = new GridData();
+ Monitor monitor = parent.getMonitor();
+ int maxWidth = monitor.getBounds().width * 2 / 3;
+ int width = label.computeSize(SWT.DEFAULT, SWT.DEFAULT).x;
+ data.widthHint = Math.min(width, maxWidth);
+ data.horizontalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace = true;
+ label.setLayoutData (data);
+
+ Label userLabel = new Label(shell, SWT.NONE);
+ userLabel.setText(SWT.getMessage("SWT_Username")); //$NON-NLS-1$
+
+ final Text userText = new Text(shell, SWT.BORDER);
+ if (user[0] != null) userText.setText(user[0]);
+ data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace = true;
+ userText.setLayoutData(data);
+
+ Label passwordLabel = new Label(shell, SWT.NONE);
+ passwordLabel.setText(SWT.getMessage("SWT_Password")); //$NON-NLS-1$
+
+ final Text passwordText = new Text(shell, SWT.PASSWORD | SWT.BORDER);
+ if (pass[0] != null) passwordText.setText(pass[0]);
+ data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace = true;
+ passwordText.setLayoutData(data);
+
+ final Button[] buttons = new Button[3];
+ Listener listener = new Listener() {
+ public void handleEvent(Event event) {
+ if (buttons[0] != null) checkValue[0] = buttons[0].getSelection() ? 1 : 0;
+ user[0] = userText.getText();
+ pass[0] = passwordText.getText();
+ result[0] = event.widget == buttons[1] ? 1 : 0;
+ shell.close();
+ }
+ };
+ if (check != null) {
+ buttons[0] = new Button(shell, SWT.CHECK);
+ buttons[0].setText(check);
+ buttons[0].setSelection(checkValue[0] != 0);
+ data = new GridData ();
+ data.horizontalAlignment = GridData.BEGINNING;
+ buttons[0].setLayoutData (data);
+ }
+ Composite composite = new Composite(shell, SWT.NONE);
+ data = new GridData();
+ data.horizontalAlignment = GridData.CENTER;
+ composite.setLayoutData (data);
+ composite.setLayout(new GridLayout(2, true));
+ buttons[1] = new Button(composite, SWT.PUSH);
+ buttons[1].setText(SWT.getMessage("SWT_OK")); //$NON-NLS-1$
+ buttons[1].setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ buttons[1].addListener(SWT.Selection, listener);
+ buttons[2] = new Button(composite, SWT.PUSH);
+ buttons[2].setText(SWT.getMessage("SWT_Cancel")); //$NON-NLS-1$
+ buttons[2].setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ buttons[2].addListener(SWT.Selection, listener);
+
+ shell.setDefaultButton(buttons[1]);
+ shell.pack();
+ shell.open();
+ Display display = parent.getDisplay();
+ while (!shell.isDisposed()) {
+ if (!display.readAndDispatch()) display.sleep();
+ }
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/PromptService2.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/PromptService2.java
new file mode 100644
index 0000000000..41452c212b
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/PromptService2.java
@@ -0,0 +1,641 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swt.browser;
+
+import org.eclipse.swt.*;
+import org.eclipse.swt.internal.*;
+import org.eclipse.swt.internal.mozilla.*;
+import org.eclipse.swt.widgets.*;
+
+class PromptService2 {
+ XPCOMObject supports;
+ XPCOMObject promptService;
+ XPCOMObject promptService2;
+ int refCount = 0;
+
+PromptService2 () {
+ createCOMInterfaces ();
+}
+
+int AddRef () {
+ refCount++;
+ return refCount;
+}
+
+void createCOMInterfaces () {
+ /* Create each of the interfaces that this object implements */
+ supports = new XPCOMObject (new int[] {2, 0, 0}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ };
+
+ promptService = new XPCOMObject (new int[] {2, 0, 0, 3, 5, 4, 6, 10, 7, 8, 7, 7}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return Alert (args[0], args[1], args[2]);}
+ public int /*long*/ method4 (int /*long*/[] args) {return AlertCheck (args[0], args[1], args[2], args[3], args[4]);}
+ public int /*long*/ method5 (int /*long*/[] args) {return Confirm (args[0], args[1], args[2], args[3]);}
+ public int /*long*/ method6 (int /*long*/[] args) {return ConfirmCheck (args[0], args[1], args[2], args[3], args[4], args[5]);}
+ public int /*long*/ method7 (int /*long*/[] args) {return ConfirmEx (args[0], args[1], args[2], (int)/*64*/args[3], args[4], args[5], args[6], args[7], args[8], args[9]);}
+ public int /*long*/ method8 (int /*long*/[] args) {return Prompt (args[0], args[1], args[2], args[3], args[4], args[5], args[6]);}
+ public int /*long*/ method9 (int /*long*/[] args) {return PromptUsernameAndPassword (args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7]);}
+ public int /*long*/ method10 (int /*long*/[] args) {return PromptPassword (args[0], args[1], args[2], args[3], args[4], args[5], args[6]);}
+ public int /*long*/ method11 (int /*long*/[] args) {return Select (args[0], args[1], args[2], (int)/*64*/args[3], args[4], args[5], args[6]);}
+ };
+
+ promptService2 = new XPCOMObject (new int[] {2, 0, 0, 3, 5, 4, 6, 10, 7, 8, 7, 7, 7, 9}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return Alert (args[0], args[1], args[2]);}
+ public int /*long*/ method4 (int /*long*/[] args) {return AlertCheck (args[0], args[1], args[2], args[3], args[4]);}
+ public int /*long*/ method5 (int /*long*/[] args) {return Confirm (args[0], args[1], args[2], args[3]);}
+ public int /*long*/ method6 (int /*long*/[] args) {return ConfirmCheck (args[0], args[1], args[2], args[3], args[4], args[5]);}
+ public int /*long*/ method7 (int /*long*/[] args) {return ConfirmEx (args[0], args[1], args[2], (int)/*64*/args[3], args[4], args[5], args[6], args[7], args[8], args[9]);}
+ public int /*long*/ method8 (int /*long*/[] args) {return Prompt (args[0], args[1], args[2], args[3], args[4], args[5], args[6]);}
+ public int /*long*/ method9 (int /*long*/[] args) {return PromptUsernameAndPassword (args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7]);}
+ public int /*long*/ method10 (int /*long*/[] args) {return PromptPassword (args[0], args[1], args[2], args[3], args[4], args[5], args[6]);}
+ public int /*long*/ method11 (int /*long*/[] args) {return Select (args[0], args[1], args[2], (int)/*64*/args[3], args[4], args[5], args[6]);}
+ public int /*long*/ method12 (int /*long*/[] args) {return PromptAuth (args[0], args[1], (int)/*64*/args[2], args[3], args[4], args[5], args[6]);}
+ public int /*long*/ method13 (int /*long*/[] args) {return AsyncPromptAuth (args[0], args[1], args[2], args[3], (int)/*64*/args[4], args[5], args[6], args[7], args[8]);}
+ };
+}
+
+void disposeCOMInterfaces () {
+ if (supports != null) {
+ supports.dispose ();
+ supports = null;
+ }
+ if (promptService != null) {
+ promptService.dispose ();
+ promptService = null;
+ }
+ if (promptService2 != null) {
+ promptService2.dispose ();
+ promptService2 = null;
+ }
+}
+
+int /*long*/ getAddress () {
+ return promptService2.getAddress ();
+}
+
+int QueryInterface (int /*long*/ riid, int /*long*/ ppvObject) {
+ if (riid == 0 || ppvObject == 0) return XPCOM.NS_ERROR_NO_INTERFACE;
+ nsID guid = new nsID ();
+ XPCOM.memmove (guid, riid, nsID.sizeof);
+
+ if (guid.Equals (nsISupports.NS_ISUPPORTS_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {supports.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsIPromptService.NS_IPROMPTSERVICE_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {promptService.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsIPromptService2.NS_IPROMPTSERVICE2_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {promptService2.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+
+ XPCOM.memmove (ppvObject, new int /*long*/[] {0}, C.PTR_SIZEOF);
+ return XPCOM.NS_ERROR_NO_INTERFACE;
+}
+
+int Release () {
+ refCount--;
+ if (refCount == 0) disposeCOMInterfaces ();
+ return refCount;
+}
+
+Browser getBrowser (int /*long*/ aDOMWindow) {
+ if (aDOMWindow == 0) return null;
+ nsIDOMWindow window = new nsIDOMWindow (aDOMWindow);
+ return Mozilla.findBrowser (window);
+}
+
+String getLabel (int buttonFlag, int index, int /*long*/ buttonTitle) {
+ String label = null;
+ int flag = (buttonFlag & (0xff * index)) / index;
+ switch (flag) {
+ case nsIPromptService.BUTTON_TITLE_CANCEL : label = SWT.getMessage ("SWT_Cancel"); break; //$NON-NLS-1$
+ case nsIPromptService.BUTTON_TITLE_NO : label = SWT.getMessage ("SWT_No"); break; //$NON-NLS-1$
+ case nsIPromptService.BUTTON_TITLE_OK : label = SWT.getMessage ("SWT_OK"); break; //$NON-NLS-1$
+ case nsIPromptService.BUTTON_TITLE_SAVE : label = SWT.getMessage ("SWT_Save"); break; //$NON-NLS-1$
+ case nsIPromptService.BUTTON_TITLE_YES : label = SWT.getMessage ("SWT_Yes"); break; //$NON-NLS-1$
+ case nsIPromptService.BUTTON_TITLE_IS_STRING : {
+ int length = XPCOM.strlen_PRUnichar (buttonTitle);
+ char[] dest = new char[length];
+ XPCOM.memmove (dest, buttonTitle, length * 2);
+ label = new String (dest);
+ }
+ }
+ return label;
+}
+
+/* nsIPromptService */
+
+int Alert (int /*long*/ aParent, int /*long*/ aDialogTitle, int /*long*/ aText) {
+ Browser browser = getBrowser (aParent);
+
+ int length = XPCOM.strlen_PRUnichar (aDialogTitle);
+ char[] dest = new char[length];
+ XPCOM.memmove (dest, aDialogTitle, length * 2);
+ String titleLabel = new String (dest);
+
+ length = XPCOM.strlen_PRUnichar (aText);
+ dest = new char[length];
+ XPCOM.memmove (dest, aText, length * 2);
+ String textLabel = new String (dest);
+
+ Shell shell = browser == null ? new Shell () : browser.getShell ();
+ MessageBox messageBox = new MessageBox (shell, SWT.OK | SWT.ICON_WARNING);
+ messageBox.setText (titleLabel);
+ messageBox.setMessage (textLabel);
+ messageBox.open ();
+ return XPCOM.NS_OK;
+}
+
+int AlertCheck (int /*long*/ aParent, int /*long*/ aDialogTitle, int /*long*/ aText, int /*long*/ aCheckMsg, int /*long*/ aCheckState) {
+ Browser browser = getBrowser (aParent);
+
+ int length = XPCOM.strlen_PRUnichar (aDialogTitle);
+ char[] dest = new char[length];
+ XPCOM.memmove (dest, aDialogTitle, length * 2);
+ String titleLabel = new String (dest);
+
+ length = XPCOM.strlen_PRUnichar (aText);
+ dest = new char[length];
+ XPCOM.memmove (dest, aText, length * 2);
+ String textLabel = new String (dest);
+
+ length = XPCOM.strlen_PRUnichar (aCheckMsg);
+ dest = new char[length];
+ XPCOM.memmove (dest, aCheckMsg, length * 2);
+ String checkLabel = new String (dest);
+
+ Shell shell = browser == null ? new Shell () : browser.getShell ();
+ PromptDialog dialog = new PromptDialog (shell);
+ int[] check = new int[1];
+ if (aCheckState != 0) XPCOM.memmove (check, aCheckState, 4); /* PRBool */
+ dialog.alertCheck (titleLabel, textLabel, checkLabel, check);
+ if (aCheckState != 0) XPCOM.memmove (aCheckState, check, 4); /* PRBool */
+ return XPCOM.NS_OK;
+}
+
+int AsyncPromptAuth(int /*long*/ aParent, int /*long*/ aChannel, int /*long*/ aCallback, int /*long*/ aContext, int level, int /*long*/ authInfo, int /*long*/ checkboxLabel, int /*long*/ checkValue, int /*long*/ _retval) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int Confirm (int /*long*/ aParent, int /*long*/ aDialogTitle, int /*long*/ aText, int /*long*/ _retval) {
+ Browser browser = getBrowser (aParent);
+
+ int length = XPCOM.strlen_PRUnichar (aDialogTitle);
+ char[] dest = new char[length];
+ XPCOM.memmove (dest, aDialogTitle, length * 2);
+ String titleLabel = new String (dest);
+
+ length = XPCOM.strlen_PRUnichar (aText);
+ dest = new char[length];
+ XPCOM.memmove (dest, aText, length * 2);
+ String textLabel = new String (dest);
+
+ Shell shell = browser == null ? new Shell () : browser.getShell ();
+ MessageBox messageBox = new MessageBox (shell, SWT.OK | SWT.CANCEL | SWT.ICON_QUESTION);
+ messageBox.setText (titleLabel);
+ messageBox.setMessage (textLabel);
+ int id = messageBox.open ();
+ int[] result = {id == SWT.OK ? 1 : 0};
+ XPCOM.memmove (_retval, result, 4);
+ return XPCOM.NS_OK;
+}
+
+int ConfirmCheck (int /*long*/ aParent, int /*long*/ aDialogTitle, int /*long*/ aText, int /*long*/ aCheckMsg, int /*long*/ aCheckState, int /*long*/ _retval) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int ConfirmEx (int /*long*/ aParent, int /*long*/ aDialogTitle, int /*long*/ aText, int aButtonFlags, int /*long*/ aButton0Title, int /*long*/ aButton1Title, int /*long*/ aButton2Title, int /*long*/ aCheckMsg, int /*long*/ aCheckState, int /*long*/ _retval) {
+ Browser browser = getBrowser (aParent);
+
+ int length = XPCOM.strlen_PRUnichar (aDialogTitle);
+ char[] dest = new char[length];
+ XPCOM.memmove (dest, aDialogTitle, length * 2);
+ String titleLabel = new String (dest);
+
+ length = XPCOM.strlen_PRUnichar (aText);
+ dest = new char[length];
+ XPCOM.memmove (dest, aText, length * 2);
+ String textLabel = new String (dest);
+
+ String checkLabel = null;
+ if (aCheckMsg != 0) {
+ length = XPCOM.strlen_PRUnichar (aCheckMsg);
+ dest = new char[length];
+ XPCOM.memmove (dest, aCheckMsg, length * 2);
+ checkLabel = new String (dest);
+ }
+
+ String button0Label = getLabel (aButtonFlags, nsIPromptService.BUTTON_POS_0, aButton0Title);
+ String button1Label = getLabel (aButtonFlags, nsIPromptService.BUTTON_POS_1, aButton1Title);
+ String button2Label = getLabel (aButtonFlags, nsIPromptService.BUTTON_POS_2, aButton2Title);
+
+ int defaultIndex = 0;
+ if ((aButtonFlags & nsIPromptService.BUTTON_POS_1_DEFAULT) != 0) {
+ defaultIndex = 1;
+ } else if ((aButtonFlags & nsIPromptService.BUTTON_POS_2_DEFAULT) != 0) {
+ defaultIndex = 2;
+ }
+
+ Shell shell = browser == null ? new Shell () : browser.getShell ();
+ PromptDialog dialog = new PromptDialog (shell);
+ int[] check = new int[1], result = new int[1];
+ if (aCheckState != 0) XPCOM.memmove (check, aCheckState, 4);
+ dialog.confirmEx (titleLabel, textLabel, checkLabel, button0Label, button1Label, button2Label, defaultIndex, check, result);
+ if (aCheckState != 0) XPCOM.memmove (aCheckState, check, 4);
+ XPCOM.memmove (_retval, result, 4);
+ return XPCOM.NS_OK;
+}
+
+int Prompt (int /*long*/ aParent, int /*long*/ aDialogTitle, int /*long*/ aText, int /*long*/ aValue, int /*long*/ aCheckMsg, int /*long*/ aCheckState, int /*long*/ _retval) {
+ Browser browser = getBrowser (aParent);
+ String titleLabel = null, textLabel, checkLabel = null;
+ String[] valueLabel = new String[1];
+ char[] dest;
+ int length;
+ if (aDialogTitle != 0) {
+ length = XPCOM.strlen_PRUnichar (aDialogTitle);
+ dest = new char[length];
+ XPCOM.memmove (dest, aDialogTitle, length * 2);
+ titleLabel = new String (dest);
+ }
+
+ length = XPCOM.strlen_PRUnichar (aText);
+ dest = new char[length];
+ XPCOM.memmove (dest, aText, length * 2);
+ textLabel = new String (dest);
+
+ int /*long*/[] valueAddr = new int /*long*/[1];
+ XPCOM.memmove (valueAddr, aValue, C.PTR_SIZEOF);
+ if (valueAddr[0] != 0) {
+ length = XPCOM.strlen_PRUnichar (valueAddr[0]);
+ dest = new char[length];
+ XPCOM.memmove (dest, valueAddr[0], length * 2);
+ valueLabel[0] = new String (dest);
+ }
+
+ if (aCheckMsg != 0) {
+ length = XPCOM.strlen_PRUnichar (aCheckMsg);
+ if (length > 0) {
+ dest = new char[length];
+ XPCOM.memmove (dest, aCheckMsg, length * 2);
+ checkLabel = new String (dest);
+ }
+ }
+
+ Shell shell = browser == null ? new Shell () : browser.getShell ();
+ PromptDialog dialog = new PromptDialog (shell);
+ int[] check = new int[1], result = new int[1];
+ if (aCheckState != 0) XPCOM.memmove (check, aCheckState, 4);
+ dialog.prompt (titleLabel, textLabel, checkLabel, valueLabel, check, result);
+
+ XPCOM.memmove (_retval, result, 4);
+ if (result[0] == 1) {
+ /*
+ * User selected OK. User name and password are returned as PRUnichar values. Any default
+ * value that we override must be freed using the nsIMemory service.
+ */
+ if (valueLabel[0] != null) {
+ int /*long*/[] result2 = new int /*long*/[1];
+ int rc = XPCOM.NS_GetServiceManager (result2);
+ if (rc != XPCOM.NS_OK) SWT.error (rc);
+ if (result2[0] == 0) SWT.error (XPCOM.NS_NOINTERFACE);
+
+ nsIServiceManager serviceManager = new nsIServiceManager (result2[0]);
+ result2[0] = 0;
+ byte[] aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_MEMORY_CONTRACTID, true);
+ rc = serviceManager.GetServiceByContractID (aContractID, nsIMemory.NS_IMEMORY_IID, result2);
+ if (rc != XPCOM.NS_OK) SWT.error (rc);
+ if (result2[0] == 0) SWT.error (XPCOM.NS_NOINTERFACE);
+ serviceManager.Release ();
+
+ nsIMemory memory = new nsIMemory (result2[0]);
+ result2[0] = 0;
+
+ int cnt = valueLabel[0].length ();
+ char[] buffer = new char[cnt + 1];
+ valueLabel[0].getChars (0, cnt, buffer, 0);
+ int size = buffer.length * 2;
+ int /*long*/ ptr = memory.Alloc (size);
+ XPCOM.memmove (ptr, buffer, size);
+ XPCOM.memmove (aValue, new int /*long*/[] {ptr}, C.PTR_SIZEOF);
+
+ if (valueAddr[0] != 0) {
+ memory.Free (valueAddr[0]);
+ }
+ memory.Release ();
+ }
+ }
+ if (aCheckState != 0) XPCOM.memmove (aCheckState, check, 4);
+ return XPCOM.NS_OK;
+}
+
+int PromptAuth(int /*long*/ aParent, int /*long*/ aChannel, int level, int /*long*/ authInfo, int /*long*/ checkboxLabel, int /*long*/ checkboxValue, int /*long*/ _retval) {
+ nsIAuthInformation auth = new nsIAuthInformation (authInfo);
+
+ Browser browser = getBrowser (aParent);
+ if (browser != null) {
+ Mozilla mozilla = (Mozilla)browser.webBrowser;
+ /*
+ * Do not invoke the listeners if this challenge has been failed too many
+ * times because a listener is likely giving incorrect credentials repeatedly
+ * and will do so indefinitely.
+ */
+ if (mozilla.authCount++ < 3) {
+ for (int i = 0; i < mozilla.authenticationListeners.length; i++) {
+ AuthenticationEvent event = new AuthenticationEvent (browser);
+ event.location = mozilla.lastNavigateURL;
+ mozilla.authenticationListeners[i].authenticate (event);
+ if (!event.doit) {
+ XPCOM.memmove (_retval, new int[] {0}, 4); /* PRBool */
+ return XPCOM.NS_OK;
+ }
+ if (event.user != null && event.password != null) {
+ nsEmbedString string = new nsEmbedString (event.user);
+ int rc = auth.SetUsername (string.getAddress ());
+ if (rc != XPCOM.NS_OK) SWT.error (rc);
+ string.dispose ();
+ string = new nsEmbedString (event.password);
+ rc = auth.SetPassword (string.getAddress ());
+ if (rc != XPCOM.NS_OK) SWT.error (rc);
+ string.dispose ();
+ XPCOM.memmove (_retval, new int[] {1}, 4); /* PRBool */
+ return XPCOM.NS_OK;
+ }
+ }
+ }
+ }
+
+ /* no listener handled the challenge, so show an authentication dialog */
+
+ String checkLabel = null;
+ int[] checkValue = new int[1];
+ String[] userLabel = new String[1], passLabel = new String[1];
+
+ String title = SWT.getMessage ("SWT_Authentication_Required"); //$NON-NLS-1$
+
+ if (checkboxLabel != 0 && checkboxValue != 0) {
+ int length = XPCOM.strlen_PRUnichar (checkboxLabel);
+ char[] dest = new char[length];
+ XPCOM.memmove (dest, checkboxLabel, length * 2);
+ checkLabel = new String (dest);
+ XPCOM.memmove (checkValue, checkboxValue, 4); /* PRBool */
+ }
+
+ /* get initial username and password values */
+
+ int /*long*/ ptr = XPCOM.nsEmbedString_new ();
+ int rc = auth.GetUsername (ptr);
+ if (rc != XPCOM.NS_OK) SWT.error (rc);
+ int length = XPCOM.nsEmbedString_Length (ptr);
+ int /*long*/ buffer = XPCOM.nsEmbedString_get (ptr);
+ char[] chars = new char[length];
+ XPCOM.memmove (chars, buffer, length * 2);
+ userLabel[0] = new String (chars);
+ XPCOM.nsEmbedString_delete (ptr);
+
+ ptr = XPCOM.nsEmbedString_new ();
+ rc = auth.GetPassword (ptr);
+ if (rc != XPCOM.NS_OK) SWT.error (rc);
+ length = XPCOM.nsEmbedString_Length (ptr);
+ buffer = XPCOM.nsEmbedString_get (ptr);
+ chars = new char[length];
+ XPCOM.memmove (chars, buffer, length * 2);
+ passLabel[0] = new String (chars);
+ XPCOM.nsEmbedString_delete (ptr);
+
+ /* compute the message text */
+
+ ptr = XPCOM.nsEmbedString_new ();
+ rc = auth.GetRealm (ptr);
+ if (rc != XPCOM.NS_OK) SWT.error (rc);
+ length = XPCOM.nsEmbedString_Length (ptr);
+ buffer = XPCOM.nsEmbedString_get (ptr);
+ chars = new char[length];
+ XPCOM.memmove (chars, buffer, length * 2);
+ String realm = new String (chars);
+ XPCOM.nsEmbedString_delete (ptr);
+
+ nsIChannel channel = new nsIChannel (aChannel);
+ int /*long*/[] uri = new int /*long*/[1];
+ rc = channel.GetURI (uri);
+ if (rc != XPCOM.NS_OK) SWT.error (rc);
+ if (uri[0] == 0) Mozilla.error (XPCOM.NS_NOINTERFACE);
+
+ nsIURI nsURI = new nsIURI (uri[0]);
+ int /*long*/ host = XPCOM.nsEmbedCString_new ();
+ rc = nsURI.GetHost (host);
+ if (rc != XPCOM.NS_OK) SWT.error (rc);
+ length = XPCOM.nsEmbedCString_Length (host);
+ buffer = XPCOM.nsEmbedCString_get (host);
+ byte[] bytes = new byte[length];
+ XPCOM.memmove (bytes, buffer, length);
+ String hostString = new String (bytes);
+ XPCOM.nsEmbedCString_delete (host);
+ nsURI.Release ();
+
+ String message;
+ if (realm.length () > 0 && hostString.length () > 0) {
+ message = Compatibility.getMessage ("SWT_Enter_Username_and_Password", new String[] {realm, hostString}); //$NON-NLS-1$
+ } else {
+ message = ""; //$NON-NLS-1$
+ }
+
+ /* open the prompter */
+ Shell shell = browser == null ? new Shell () : browser.getShell ();
+ PromptDialog dialog = new PromptDialog (shell);
+ int[] result = new int[1];
+ dialog.promptUsernameAndPassword (title, message, checkLabel, userLabel, passLabel, checkValue, result);
+
+ XPCOM.memmove (_retval, result, 4); /* PRBool */
+ if (result[0] == 1) { /* User selected OK */
+ nsEmbedString string = new nsEmbedString (userLabel[0]);
+ rc = auth.SetUsername(string.getAddress ());
+ if (rc != XPCOM.NS_OK) SWT.error (rc);
+ string.dispose ();
+
+ string = new nsEmbedString (passLabel[0]);
+ rc = auth.SetPassword(string.getAddress ());
+ if (rc != XPCOM.NS_OK) SWT.error (rc);
+ string.dispose ();
+ }
+
+ if (checkboxValue != 0) XPCOM.memmove (checkboxValue, checkValue, 4); /* PRBool */
+ return XPCOM.NS_OK;
+}
+
+int PromptUsernameAndPassword (int /*long*/ aParent, int /*long*/ aDialogTitle, int /*long*/ aText, int /*long*/ aUsername, int /*long*/ aPassword, int /*long*/ aCheckMsg, int /*long*/ aCheckState, int /*long*/ _retval) {
+ Browser browser = getBrowser (aParent);
+ String user = null, password = null;
+
+ if (browser != null) {
+ Mozilla mozilla = (Mozilla)browser.webBrowser;
+ /*
+ * Do not invoke the listeners if this challenge has been failed too many
+ * times because a listener is likely giving incorrect credentials repeatedly
+ * and will do so indefinitely.
+ */
+ if (mozilla.authCount++ < 3) {
+ for (int i = 0; i < mozilla.authenticationListeners.length; i++) {
+ AuthenticationEvent event = new AuthenticationEvent (browser);
+ event.location = mozilla.lastNavigateURL;
+ mozilla.authenticationListeners[i].authenticate (event);
+ if (!event.doit) {
+ XPCOM.memmove (_retval, new int[] {0}, 4); /* PRBool */
+ return XPCOM.NS_OK;
+ }
+ if (event.user != null && event.password != null) {
+ user = event.user;
+ password = event.password;
+ XPCOM.memmove (_retval, new int[] {1}, 4); /* PRBool */
+ break;
+ }
+ }
+ }
+ }
+
+ if (user == null) {
+ /* no listener handled the challenge, so show an authentication dialog */
+
+ String titleLabel, textLabel, checkLabel = null;
+ String[] userLabel = new String[1], passLabel = new String[1];
+ char[] dest;
+ int length;
+ if (aDialogTitle != 0) {
+ length = XPCOM.strlen_PRUnichar (aDialogTitle);
+ dest = new char[length];
+ XPCOM.memmove (dest, aDialogTitle, length * 2);
+ titleLabel = new String (dest);
+ } else {
+ titleLabel = SWT.getMessage ("SWT_Authentication_Required"); //$NON-NLS-1$
+ }
+
+ length = XPCOM.strlen_PRUnichar (aText);
+ dest = new char[length];
+ XPCOM.memmove (dest, aText, length * 2);
+ textLabel = new String (dest);
+
+ int /*long*/[] userAddr = new int /*long*/[1];
+ XPCOM.memmove (userAddr, aUsername, C.PTR_SIZEOF);
+ if (userAddr[0] != 0) {
+ length = XPCOM.strlen_PRUnichar (userAddr[0]);
+ dest = new char[length];
+ XPCOM.memmove (dest, userAddr[0], length * 2);
+ userLabel[0] = new String (dest);
+ }
+
+ int /*long*/[] passAddr = new int /*long*/[1];
+ XPCOM.memmove (passAddr, aPassword, C.PTR_SIZEOF);
+ if (passAddr[0] != 0) {
+ length = XPCOM.strlen_PRUnichar (passAddr[0]);
+ dest = new char[length];
+ XPCOM.memmove (dest, passAddr[0], length * 2);
+ passLabel[0] = new String (dest);
+ }
+
+ if (aCheckMsg != 0) {
+ length = XPCOM.strlen_PRUnichar (aCheckMsg);
+ if (length > 0) {
+ dest = new char[length];
+ XPCOM.memmove (dest, aCheckMsg, length * 2);
+ checkLabel = new String (dest);
+ }
+ }
+
+ Shell shell = browser == null ? new Shell () : browser.getShell ();
+ PromptDialog dialog = new PromptDialog (shell);
+ int[] check = new int[1], result = new int[1];
+ if (aCheckState != 0) XPCOM.memmove (check, aCheckState, 4); /* PRBool */
+ dialog.promptUsernameAndPassword (titleLabel, textLabel, checkLabel, userLabel, passLabel, check, result);
+
+ XPCOM.memmove (_retval, result, 4); /* PRBool */
+ if (result[0] == 1) {
+ /* User selected OK */
+ user = userLabel[0];
+ password = passLabel[0];
+ }
+ if (aCheckState != 0) XPCOM.memmove (aCheckState, check, 4); /* PRBool */
+ }
+
+ if (user != null) {
+ /*
+ * User name and password are returned as PRUnichar values. Any default
+ * value that we override must be freed using the nsIMemory service.
+ */
+ int /*long*/[] userAddr = new int /*long*/[1];
+ XPCOM.memmove (userAddr, aUsername, C.PTR_SIZEOF);
+ int /*long*/[] passAddr = new int /*long*/[1];
+ XPCOM.memmove (passAddr, aPassword, C.PTR_SIZEOF);
+
+ int /*long*/[] result = new int /*long*/[1];
+ int rc = XPCOM.NS_GetServiceManager (result);
+ if (rc != XPCOM.NS_OK) SWT.error (rc);
+ if (result[0] == 0) SWT.error (XPCOM.NS_NOINTERFACE);
+
+ nsIServiceManager serviceManager = new nsIServiceManager (result[0]);
+ result[0] = 0;
+ byte[] aContractID = MozillaDelegate.wcsToMbcs (null, XPCOM.NS_MEMORY_CONTRACTID, true);
+ rc = serviceManager.GetServiceByContractID (aContractID, nsIMemory.NS_IMEMORY_IID, result);
+ if (rc != XPCOM.NS_OK) SWT.error (rc);
+ if (result[0] == 0) SWT.error (XPCOM.NS_NOINTERFACE);
+ serviceManager.Release ();
+
+ nsIMemory memory = new nsIMemory (result[0]);
+ result[0] = 0;
+ if (userAddr[0] != 0) memory.Free (userAddr[0]);
+ if (passAddr[0] != 0) memory.Free (passAddr[0]);
+ memory.Release ();
+
+ /* write the name and password values */
+
+ int cnt = user.length ();
+ char[] buffer = new char[cnt + 1];
+ user.getChars (0, cnt, buffer, 0);
+ int size = buffer.length * 2;
+ int /*long*/ ptr = C.malloc (size);
+ XPCOM.memmove (ptr, buffer, size);
+ XPCOM.memmove (aUsername, new int /*long*/[] {ptr}, C.PTR_SIZEOF);
+
+ cnt = password.length ();
+ buffer = new char[cnt + 1];
+ password.getChars (0, cnt, buffer, 0);
+ size = buffer.length * 2;
+ ptr = C.malloc (size);
+ XPCOM.memmove (ptr, buffer, size);
+ XPCOM.memmove (aPassword, new int /*long*/[] {ptr}, C.PTR_SIZEOF);
+ }
+
+ return XPCOM.NS_OK;
+}
+
+int PromptPassword (int /*long*/ aParent, int /*long*/ aDialogTitle, int /*long*/ aText, int /*long*/ aPassword, int /*long*/ aCheckMsg, int /*long*/ aCheckState, int /*long*/ _retval) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+int Select (int /*long*/ aParent, int /*long*/ aDialogTitle, int /*long*/ aText, int aCount, int /*long*/ aSelectList, int /*long*/ aOutSelection, int /*long*/ _retval) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/PromptService2Factory.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/PromptService2Factory.java
new file mode 100644
index 0000000000..89fdc66a75
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/PromptService2Factory.java
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swt.browser;
+
+import org.eclipse.swt.internal.C;
+import org.eclipse.swt.internal.mozilla.*;
+
+class PromptService2Factory {
+ XPCOMObject supports;
+ XPCOMObject factory;
+ int refCount = 0;
+
+PromptService2Factory () {
+ createCOMInterfaces ();
+}
+
+int AddRef () {
+ refCount++;
+ return refCount;
+}
+
+void createCOMInterfaces () {
+ /* Create each of the interfaces that this object implements */
+ supports = new XPCOMObject (new int[] {2, 0, 0}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ };
+
+ factory = new XPCOMObject (new int[] {2, 0, 0, 3, 1}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return CreateInstance (args[0], args[1], args[2]);}
+ public int /*long*/ method4 (int /*long*/[] args) {return LockFactory ((int)/*64*/args[0]);}
+ };
+}
+
+void disposeCOMInterfaces () {
+ if (supports != null) {
+ supports.dispose ();
+ supports = null;
+ }
+ if (factory != null) {
+ factory.dispose ();
+ factory = null;
+ }
+}
+
+int /*long*/ getAddress () {
+ return factory.getAddress ();
+}
+
+int QueryInterface (int /*long*/ riid, int /*long*/ ppvObject) {
+ if (riid == 0 || ppvObject == 0) return XPCOM.NS_ERROR_NO_INTERFACE;
+ nsID guid = new nsID ();
+ XPCOM.memmove (guid, riid, nsID.sizeof);
+
+ if (guid.Equals (nsISupports.NS_ISUPPORTS_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {supports.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsIFactory.NS_IFACTORY_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {factory.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+
+ XPCOM.memmove (ppvObject, new int /*long*/[] {0}, C.PTR_SIZEOF);
+ return XPCOM.NS_ERROR_NO_INTERFACE;
+}
+
+int Release () {
+ refCount--;
+ if (refCount == 0) disposeCOMInterfaces ();
+ return refCount;
+}
+
+/* nsIFactory */
+
+int CreateInstance (int /*long*/ aOuter, int /*long*/ iid, int /*long*/ result) {
+ PromptService2 promptService = new PromptService2 ();
+ promptService.AddRef ();
+ XPCOM.memmove (result, new int /*long*/[] {promptService.getAddress ()}, C.PTR_SIZEOF);
+ return XPCOM.NS_OK;
+}
+
+int LockFactory (int lock) {
+ return XPCOM.NS_OK;
+}
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/SimpleEnumerator.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/SimpleEnumerator.java
new file mode 100644
index 0000000000..4be8516ca4
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/SimpleEnumerator.java
@@ -0,0 +1,114 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swt.browser;
+
+import org.eclipse.swt.internal.C;
+import org.eclipse.swt.internal.mozilla.*;
+
+class SimpleEnumerator {
+ XPCOMObject supports;
+ XPCOMObject simpleEnumerator;
+ int refCount = 0;
+ nsISupports[] values;
+ int index = 0;
+
+SimpleEnumerator (nsISupports[] values) {
+ this.values = values;
+ for (int i = 0; i < values.length; i++) {
+ values[i].AddRef ();
+ }
+ createCOMInterfaces ();
+}
+
+int AddRef () {
+ refCount++;
+ return refCount;
+}
+
+void createCOMInterfaces () {
+ /* Create each of the interfaces that this object implements */
+ supports = new XPCOMObject (new int[] {2, 0, 0}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ };
+
+ simpleEnumerator = new XPCOMObject (new int[] {2, 0, 0, 1, 1}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return HasMoreElements (args[0]);}
+ public int /*long*/ method4 (int /*long*/[] args) {return GetNext (args[0]);}
+ };
+}
+
+void disposeCOMInterfaces () {
+ if (supports != null) {
+ supports.dispose ();
+ supports = null;
+ }
+ if (simpleEnumerator != null) {
+ simpleEnumerator.dispose ();
+ simpleEnumerator = null;
+ }
+ if (values != null) {
+ for (int i = 0; i < values.length; i++) {
+ values[i].Release ();
+ }
+ values = null;
+ }
+}
+
+int /*long*/ getAddress () {
+ return simpleEnumerator.getAddress ();
+}
+
+int QueryInterface (int /*long*/ riid, int /*long*/ ppvObject) {
+ if (riid == 0 || ppvObject == 0) return XPCOM.NS_ERROR_NO_INTERFACE;
+ nsID guid = new nsID ();
+ XPCOM.memmove (guid, riid, nsID.sizeof);
+
+ if (guid.Equals (nsISupports.NS_ISUPPORTS_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {supports.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsISimpleEnumerator.NS_ISIMPLEENUMERATOR_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {simpleEnumerator.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+
+ XPCOM.memmove (ppvObject, new int /*long*/[] {0}, C.PTR_SIZEOF);
+ return XPCOM.NS_ERROR_NO_INTERFACE;
+}
+
+int Release () {
+ refCount--;
+ if (refCount == 0) disposeCOMInterfaces ();
+ return refCount;
+}
+
+int HasMoreElements (int /*long*/ _retval) {
+ boolean more = values != null && index < values.length;
+ XPCOM.memmove (_retval, new int[] {more ? 1 : 0}, 4); /*PRBool */
+ return XPCOM.NS_OK;
+}
+
+int GetNext (int /*long*/ _retval) {
+ if (values == null || index == values.length) return XPCOM.NS_ERROR_UNEXPECTED;
+ nsISupports value = values[index++];
+ value.AddRef ();
+ XPCOM.memmove (_retval, new int /*long*/[] {value.getAddress ()}, C.PTR_SIZEOF);
+ return XPCOM.NS_OK;
+}
+}
+
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/WindowCreator2.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/WindowCreator2.java
new file mode 100644
index 0000000000..17ca0515f3
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/browser/WindowCreator2.java
@@ -0,0 +1,226 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2007 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swt.browser;
+
+import org.eclipse.swt.*;
+import org.eclipse.swt.graphics.*;
+import org.eclipse.swt.internal.*;
+import org.eclipse.swt.internal.mozilla.*;
+import org.eclipse.swt.layout.*;
+import org.eclipse.swt.widgets.*;
+
+class WindowCreator2 {
+ XPCOMObject supports;
+ XPCOMObject windowCreator;
+ XPCOMObject windowCreator2;
+ int refCount = 0;
+
+WindowCreator2 () {
+ createCOMInterfaces ();
+}
+
+int AddRef () {
+ refCount++;
+ return refCount;
+}
+
+void createCOMInterfaces () {
+ /* Create each of the interfaces that this object implements */
+ supports = new XPCOMObject (new int[] {2, 0, 0}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ };
+
+ windowCreator = new XPCOMObject (new int[] {2, 0, 0, 3}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return CreateChromeWindow (args[0], (int)/*64*/args[1], args[2]);}
+ };
+
+ windowCreator2 = new XPCOMObject (new int[] {2, 0, 0, 3, 6}) {
+ public int /*long*/ method0 (int /*long*/[] args) {return QueryInterface (args[0], args[1]);}
+ public int /*long*/ method1 (int /*long*/[] args) {return AddRef ();}
+ public int /*long*/ method2 (int /*long*/[] args) {return Release ();}
+ public int /*long*/ method3 (int /*long*/[] args) {return CreateChromeWindow (args[0], (int)/*64*/args[1], args[2]);}
+ public int /*long*/ method4 (int /*long*/[] args) {return CreateChromeWindow2 (args[0], (int)/*64*/args[1], (int)/*64*/args[2], args[3], args[4], args[5]);}
+ };
+}
+
+void disposeCOMInterfaces () {
+ if (supports != null) {
+ supports.dispose ();
+ supports = null;
+ }
+ if (windowCreator != null) {
+ windowCreator.dispose ();
+ windowCreator = null;
+ }
+
+ if (windowCreator2 != null) {
+ windowCreator2.dispose ();
+ windowCreator2 = null;
+ }
+}
+
+int /*long*/ getAddress () {
+ return windowCreator.getAddress ();
+}
+
+int QueryInterface (int /*long*/ riid, int /*long*/ ppvObject) {
+ if (riid == 0 || ppvObject == 0) return XPCOM.NS_ERROR_NO_INTERFACE;
+ nsID guid = new nsID ();
+ XPCOM.memmove (guid, riid, nsID.sizeof);
+
+ if (guid.Equals (nsISupports.NS_ISUPPORTS_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {supports.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsIWindowCreator.NS_IWINDOWCREATOR_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {windowCreator.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+ if (guid.Equals (nsIWindowCreator2.NS_IWINDOWCREATOR2_IID)) {
+ XPCOM.memmove (ppvObject, new int /*long*/[] {windowCreator2.getAddress ()}, C.PTR_SIZEOF);
+ AddRef ();
+ return XPCOM.NS_OK;
+ }
+
+ XPCOM.memmove (ppvObject, new int /*long*/[] {0}, C.PTR_SIZEOF);
+ return XPCOM.NS_ERROR_NO_INTERFACE;
+}
+
+int Release () {
+ refCount--;
+ if (refCount == 0) disposeCOMInterfaces ();
+ return refCount;
+}
+
+/* nsIWindowCreator */
+
+int CreateChromeWindow (int /*long*/ parent, int chromeFlags, int /*long*/ _retval) {
+ return CreateChromeWindow2 (parent, chromeFlags, 0, 0, 0, _retval);
+}
+
+/* nsIWindowCreator2 */
+
+int CreateChromeWindow2 (int /*long*/ parent, int chromeFlags, int contextFlags, int /*long*/ uri, int /*long*/ cancel, int /*long*/ _retval) {
+ if (parent == 0 && (chromeFlags & nsIWebBrowserChrome.CHROME_OPENAS_CHROME) == 0) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+ }
+ Browser src = null;
+ if (parent != 0) {
+ nsIWebBrowserChrome browserChromeParent = new nsIWebBrowserChrome (parent);
+ int /*long*/[] aWebBrowser = new int /*long*/[1];
+ int rc = browserChromeParent.GetWebBrowser (aWebBrowser);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (aWebBrowser[0] == 0) Mozilla.error (XPCOM.NS_ERROR_NO_INTERFACE);
+
+ nsIWebBrowser webBrowser = new nsIWebBrowser (aWebBrowser[0]);
+ int /*long*/[] result = new int /*long*/[1];
+ rc = webBrowser.QueryInterface (nsIBaseWindow.NS_IBASEWINDOW_IID, result);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (result[0] == 0) Mozilla.error (XPCOM.NS_ERROR_NO_INTERFACE);
+ webBrowser.Release ();
+
+ nsIBaseWindow baseWindow = new nsIBaseWindow (result[0]);
+ result[0] = 0;
+ int /*long*/[] aParentNativeWindow = new int /*long*/[1];
+ rc = baseWindow.GetParentNativeWindow (aParentNativeWindow);
+ if (rc != XPCOM.NS_OK) Mozilla.error (rc);
+ if (aParentNativeWindow[0] == 0) Mozilla.error (XPCOM.NS_ERROR_NO_INTERFACE);
+ baseWindow.Release ();
+
+ src = Mozilla.findBrowser (aParentNativeWindow[0]);
+ }
+ final Browser browser;
+ boolean doit = true;
+ if ((chromeFlags & nsIWebBrowserChrome.CHROME_OPENAS_CHROME) != 0) {
+ /*
+ * Mozilla will request a new Browser in a modal window in order to emulate a native
+ * dialog that is not available to it (eg.- a print dialog on Linux). For this
+ * reason modal requests are handled here so that the user is not exposed to them.
+ */
+ int style = SWT.DIALOG_TRIM;
+ if ((chromeFlags & nsIWebBrowserChrome.CHROME_MODAL) != 0) style |= SWT.APPLICATION_MODAL;
+ final Shell shell = src == null ?
+ new Shell (style) :
+ new Shell (src.getShell(), style);
+ shell.setLayout (new FillLayout ());
+ browser = new Browser (shell, src == null ? SWT.MOZILLA : src.getStyle () & SWT.MOZILLA);
+ browser.addVisibilityWindowListener (new VisibilityWindowListener () {
+ public void hide (WindowEvent event) {
+ }
+ public void show (WindowEvent event) {
+ if (event.location != null) shell.setLocation (event.location);
+ if (event.size != null) {
+ Point size = event.size;
+ shell.setSize (shell.computeSize (size.x, size.y));
+ }
+ shell.open ();
+ }
+ });
+ browser.addCloseWindowListener (new CloseWindowListener () {
+ public void close (WindowEvent event) {
+ shell.close ();
+ }
+ });
+ if (uri != 0) {
+ nsIURI location = new nsIURI (uri);
+ int /*long*/ aSpec = XPCOM.nsEmbedCString_new ();
+ if (location.GetSpec (aSpec) == XPCOM.NS_OK) {
+ int length = XPCOM.nsEmbedCString_Length (aSpec);
+ if (length > 0) {
+ int /*long*/ buffer = XPCOM.nsEmbedCString_get (aSpec);
+ byte[] dest = new byte[length];
+ XPCOM.memmove (dest, buffer, length);
+ browser.setUrl (new String (dest));
+ }
+ }
+ XPCOM.nsEmbedCString_delete (aSpec);
+ }
+ } else {
+ WindowEvent event = new WindowEvent (src);
+ event.display = src.getDisplay ();
+ event.widget = src;
+ event.required = true;
+ for (int i = 0; i < src.webBrowser.openWindowListeners.length; i++) {
+ src.webBrowser.openWindowListeners[i].open (event);
+ }
+ browser = event.browser;
+
+ /* Ensure that the Browser provided by the client is valid for use */
+ doit = browser != null && !browser.isDisposed ();
+ if (doit) {
+ String platform = Platform.PLATFORM;
+ boolean isMozillaNativePlatform = platform.equals ("gtk") || platform.equals ("motif"); //$NON-NLS-1$ //$NON-NLS-2$
+ doit = isMozillaNativePlatform || (browser.getStyle () & SWT.MOZILLA) != 0;
+ }
+ }
+ if (doit) {
+ Mozilla mozilla = (Mozilla)browser.webBrowser;
+ mozilla.isChild = true;
+ int /*long*/ chromePtr = mozilla.webBrowserChrome.getAddress ();
+ nsIWebBrowserChrome webBrowserChrome = new nsIWebBrowserChrome (chromePtr);
+ webBrowserChrome.SetChromeFlags (chromeFlags);
+ webBrowserChrome.AddRef ();
+ XPCOM.memmove (_retval, new int /*long*/[] {chromePtr}, C.PTR_SIZEOF);
+ } else {
+ if (cancel != 0) {
+ C.memmove (cancel, new int[] {1}, 4); /* PRBool */
+ }
+ }
+ return doit ? XPCOM.NS_OK : XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/XPCOM.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/XPCOM.java
new file mode 100644
index 0000000000..bebef9393b
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/XPCOM.java
@@ -0,0 +1,2155 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2006 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+import org.eclipse.swt.internal.*;
+
+/** @jniclass flags=cpp */
+public class XPCOM extends C {
+ public static final String MOZILLA_FIVE_HOME = "MOZILLA_FIVE_HOME"; //$NON-NLS-1$
+ public static final String MOZILLA_PLUGIN_PATH = "MOZ_PLUGIN_PATH"; //$NON-NLS-1$
+ public static final String CONTENT_MAYBETEXT = "application/x-vnd.mozilla.maybe-text"; //$NON-NLS-1$
+ public static final String CONTENT_MULTIPART = "multipart/x-mixed-replace"; //$NON-NLS-1$
+ public static final String DOMEVENT_FOCUS = "focus"; //$NON-NLS-1$
+ public static final String DOMEVENT_UNLOAD = "unload"; //$NON-NLS-1$
+ public static final String DOMEVENT_MOUSEDOWN = "mousedown"; //$NON-NLS-1$
+ public static final String DOMEVENT_MOUSEUP = "mouseup"; //$NON-NLS-1$
+ public static final String DOMEVENT_MOUSEMOVE = "mousemove"; //$NON-NLS-1$
+ public static final String DOMEVENT_MOUSEDRAG = "draggesture"; //$NON-NLS-1$
+ public static final String DOMEVENT_MOUSEWHEEL = "DOMMouseScroll"; //$NON-NLS-1$
+ public static final String DOMEVENT_MOUSEOVER = "mouseover"; //$NON-NLS-1$
+ public static final String DOMEVENT_MOUSEOUT = "mouseout"; //$NON-NLS-1$
+ public static final String DOMEVENT_KEYUP = "keyup"; //$NON-NLS-1$
+ public static final String DOMEVENT_KEYDOWN = "keydown"; //$NON-NLS-1$
+ public static final String DOMEVENT_KEYPRESS = "keypress"; //$NON-NLS-1$
+
+ /* CID constants */
+ public static final nsID EXTERNAL_CID = new nsID ("f2c59ad0-bd76-11dd-ad8b-0800200c9a66"); //$NON-NLS-1$
+ public static final nsID NS_APPSHELL_CID = new nsID("2d96b3df-c051-11d1-a827-0040959a28c9"); //$NON-NLS-1$
+ public static final nsID NS_CATEGORYMANAGER_CID = new nsID("16d222a6-1dd2-11b2-b693-f38b02c021b2"); //$NON-NLS-1$
+ public static final nsID NS_DOWNLOAD_CID = new nsID("e3fa9D0a-1dd1-11b2-bdef-8c720b597445"); //$NON-NLS-1$
+ public static final nsID NS_FILEPICKER_CID = new nsID("54ae32f8-1dd2-11b2-a209-df7c505370f8"); //$NON-NLS-1$
+ public static final nsID NS_HELPERAPPLAUNCHERDIALOG_CID = new nsID("f68578eb-6ec2-4169-ae19-8c6243f0abe1"); //$NON-NLS-1$
+ public static final nsID NS_INPUTSTREAMCHANNEL_CID = new nsID("6ddb050c-0d04-11d4-986e-00c04fa0cf4a"); //$NON-NLS-1$
+ public static final nsID NS_IOSERVICE_CID = new nsID("9ac9e770-18bc-11d3-9337-00104ba0fd40"); //$NON-NLS-1$
+ public static final nsID NS_LOADGROUP_CID = new nsID("e1c61582-2a84-11d3-8cce-0060b0fc14a3"); //$NON-NLS-1$
+ public static final nsID NS_PROMPTSERVICE_CID = new nsID("a2112d6a-0e28-421f-b46a-25c0b308cbd0"); //$NON-NLS-1$
+
+ public static final String EXTERNAL_CONTRACTID = "@eclipse.org/external;1"; //$NON-NLS-1$
+ public static final String NS_CONTEXTSTACK_CONTRACTID = "@mozilla.org/js/xpc/ContextStack;1"; //$NON-NLS-1$
+ public static final String NS_COOKIEMANAGER_CONTRACTID = "@mozilla.org/cookiemanager;1"; //$NON-NLS-1$
+ public static final String NS_COOKIESERVICE_CONTRACTID = "@mozilla.org/cookieService;1"; //$NON-NLS-1$
+ public static final String NS_DIRECTORYSERVICE_CONTRACTID = "@mozilla.org/file/directory_service;1"; //$NON-NLS-1$
+ public static final String NS_DOMSERIALIZER_CONTRACTID = "@mozilla.org/xmlextras/xmlserializer;1"; //$NON-NLS-1$
+ public static final String NS_DOWNLOAD_CONTRACTID = "@mozilla.org/download;1"; //$NON-NLS-1$
+ public static final String NS_FILEPICKER_CONTRACTID = "@mozilla.org/filepicker;1"; //$NON-NLS-1$
+ public static final String NS_HELPERAPPLAUNCHERDIALOG_CONTRACTID = "@mozilla.org/helperapplauncherdialog;1"; //$NON-NLS-1$
+ public static final String NS_MEMORY_CONTRACTID = "@mozilla.org/xpcom/memory-service;1"; //$NON-NLS-1$
+ public static final String NS_SCRIPTSECURITYMANAGER_CONTRACTID = "@mozilla.org/scriptsecuritymanager;1"; //$NON-NLS-1$
+ public static final String NS_OBSERVER_CONTRACTID = "@mozilla.org/observer-service;1"; //$NON-NLS-1$
+ public static final String NS_PREFLOCALIZEDSTRING_CONTRACTID = "@mozilla.org/pref-localizedstring;1"; //$NON-NLS-1$
+ public static final String NS_PREFSERVICE_CONTRACTID = "@mozilla.org/preferences-service;1"; //$NON-NLS-1$
+ public static final String NS_PROMPTSERVICE_CONTRACTID = "@mozilla.org/embedcomp/prompt-service;1"; //$NON-NLS-1$
+ public static final String NS_TRANSFER_CONTRACTID = "@mozilla.org/transfer;1"; //$NON-NLS-1$
+ public static final String NS_VARIANT_CONTRACTID = "@mozilla.org/variant;1"; //$NON-NLS-1$
+ public static final String NS_WEBNAVIGATIONINFO_CONTRACTID = "@mozilla.org/webnavigation-info;1"; //$NON-NLS-1$
+ public static final String NS_WINDOWWATCHER_CONTRACTID = "@mozilla.org/embedcomp/window-watcher;1"; //$NON-NLS-1$
+
+ /* directory service constants */
+ public static final String NS_APP_APPLICATION_REGISTRY_DIR = "AppRegD"; //$NON-NLS-1$
+ public static final String NS_APP_CACHE_PARENT_DIR = "cachePDir"; //$NON-NLS-1$
+ public static final String NS_APP_HISTORY_50_FILE = "UHist"; //$NON-NLS-1$
+ public static final String NS_APP_LOCALSTORE_50_FILE = "LclSt"; //$NON-NLS-1$
+ public static final String NS_APP_PLUGINS_DIR_LIST = "APluginsDL"; //$NON-NLS-1$
+ public static final String NS_APP_PREF_DEFAULTS_50_DIR = "PrfDef"; //$NON-NLS-1$
+ public static final String NS_APP_PREFS_50_DIR = "PrefD"; //$NON-NLS-1$
+ public static final String NS_APP_PREFS_50_FILE = "PrefF"; //$NON-NLS-1$
+ public static final String NS_APP_USER_CHROME_DIR = "UChrm"; //$NON-NLS-1$
+ public static final String NS_APP_USER_MIMETYPES_50_FILE = "UMimTyp"; //$NON-NLS-1$
+ public static final String NS_APP_USER_PROFILE_50_DIR = "ProfD"; //$NON-NLS-1$
+ public static final String NS_GRE_COMPONENT_DIR = "GreComsD"; //$NON-NLS-1$
+ public static final String NS_GRE_DIR = "GreD"; //$NON-NLS-1$
+ public static final String NS_OS_CURRENT_PROCESS_DIR = "CurProcD"; //$NON-NLS-1$
+ public static final String NS_OS_HOME_DIR = "Home"; //$NON-NLS-1$
+ public static final String NS_OS_TEMP_DIR = "TmpD"; //$NON-NLS-1$
+ public static final String NS_XPCOM_COMPONENT_DIR = "ComsD"; //$NON-NLS-1$
+ public static final String NS_XPCOM_CURRENT_PROCESS_DIR = "XCurProcD"; //$NON-NLS-1$
+ public static final String NS_XPCOM_INIT_CURRENT_PROCESS_DIR = "MozBinD"; //$NON-NLS-1$
+
+ /* XPCOM constants */
+ public static final int NS_OK = 0;
+ public static final int NS_COMFALSE = 1;
+ public static final int NS_BINDING_ABORTED = 0x804B0002;
+ public static final int NS_ERROR_BASE = 0xc1f30000;
+ public static final int NS_ERROR_NOT_INITIALIZED = NS_ERROR_BASE + 1;
+ public static final int NS_ERROR_ALREADY_INITIALIZED = NS_ERROR_BASE + 2;
+ public static final int NS_ERROR_NOT_IMPLEMENTED = 0x80004001;
+ public static final int NS_NOINTERFACE = 0x80004002;
+ public static final int NS_ERROR_NO_INTERFACE = NS_NOINTERFACE;
+ public static final int NS_ERROR_INVALID_POINTER = 0x80004003;
+ public static final int NS_ERROR_NULL_POINTER = NS_ERROR_INVALID_POINTER;
+ public static final int NS_ERROR_ABORT = 0x80004004;
+ public static final int NS_ERROR_FAILURE = 0x80004005;
+ public static final int NS_ERROR_UNEXPECTED = 0x8000ffff;
+ public static final int NS_ERROR_OUT_OF_MEMORY = 0x8007000e;
+ public static final int NS_ERROR_ILLEGAL_VALUE = 0x80070057;
+ public static final int NS_ERROR_INVALID_ARG = NS_ERROR_ILLEGAL_VALUE;
+ public static final int NS_ERROR_NO_AGGREGATION = 0x80040110;
+ public static final int NS_ERROR_NOT_AVAILABLE = 0x80040111;
+ public static final int NS_ERROR_FACTORY_NOT_REGISTERED = 0x80040154;
+ public static final int NS_ERROR_FACTORY_REGISTER_AGAIN = 0x80040155;
+ public static final int NS_ERROR_FACTORY_NOT_LOADED = 0x800401f8;
+ public static final int NS_ERROR_FACTORY_NO_SIGNATURE_SUPPORT = NS_ERROR_BASE + 0x101;
+ public static final int NS_ERROR_FACTORY_EXISTS = NS_ERROR_BASE + 0x100;
+ public static final int NS_ERROR_HTMLPARSER_UNRESOLVEDDTD = 0x804e03f3;
+ public static final int NS_ERROR_FILE_NOT_FOUND = 0x80520012;
+ public static final int NS_ERROR_FILE_UNRECOGNIZED_PATH = 0x80520001;
+
+public static final native int nsDynamicFunctionLoad_sizeof ();
+
+/**
+ * @param dest cast=(void *)
+ * @param src cast=(const void *),flags=no_out critical
+ * @param size cast=(size_t)
+ */
+public static final native void memmove (int /*long*/ dest, nsDynamicFunctionLoad src, int /*long*/ size);
+/**
+ * @param dest cast=(void *)
+ * @param src cast=(const void *)
+ * @param nbytes cast=(size_t)
+ */
+public static final native void memmove(nsID dest, int /*long*/ src, int nbytes);
+/**
+ * @param dest cast=(void *)
+ * @param src cast=(const void *)
+ * @param nbytes cast=(size_t)
+ */
+public static final native void memmove(int /*long*/ dest, nsID src, int nbytes);
+/** @method flags=no_gen */
+public static final native int strlen_PRUnichar(int /*long*/ s);
+
+/** @method flags=no_gen */
+public static final native int _JS_EvaluateUCScriptForPrincipals(byte[] mozillaPath, int /*long*/ cx, int /*long*/ obj, int /*long*/ principals, char[] chars, int length, byte[] filename, int lineno, int /*long*/[] retVal);
+public static final int JS_EvaluateUCScriptForPrincipals(byte[] mozillaPath, int /*long*/ cx, int /*long*/ obj, int /*long*/ principals, char[] chars, int length, byte[] filename, int lineno, int /*long*/[] retVal) {
+ lock.lock();
+ try {
+ return _JS_EvaluateUCScriptForPrincipals(mozillaPath, cx, obj, principals, chars, length, filename, lineno, retVal);
+ } finally {
+ lock.unlock();
+ }
+}
+
+/** @param result cast=(nsIComponentManager**) */
+public static final native int _NS_GetComponentManager(int /*long*/[] result);
+public static final int NS_GetComponentManager(int /*long*/[] result) {
+ lock.lock();
+ try {
+ return _NS_GetComponentManager(result);
+ } finally {
+ lock.unlock();
+ }
+}
+/** @param result cast=(nsIServiceManager**) */
+public static final native int _NS_GetServiceManager(int /*long*/[] result);
+public static final int NS_GetServiceManager(int /*long*/[] result) {
+ lock.lock();
+ try {
+ return _NS_GetServiceManager(result);
+ } finally {
+ lock.unlock();
+ }
+}
+/**
+ * @param result cast=(nsIServiceManager **)
+ * @param binDirectory cast=(nsIFile *)
+ * @param appFileLocationProvider cast=(nsIDirectoryServiceProvider *)
+ */
+public static final native int _NS_InitXPCOM2(int /*long*/ result, int /*long*/ binDirectory, int /*long*/ appFileLocationProvider);
+public static final int NS_InitXPCOM2(int /*long*/ result, int /*long*/ binDirectory, int /*long*/ appFileLocationProvider) {
+ lock.lock();
+ try {
+ return _NS_InitXPCOM2(result, binDirectory, appFileLocationProvider);
+ } finally {
+ lock.unlock();
+ }
+}
+/**
+ * @param path cast=(nsAString *),flags=struct
+ * @param result cast=(nsILocalFile**)
+ */
+public static final native int _NS_NewLocalFile(int /*long*/ path, int followLinks, int /*long*/[] result);
+public static final int NS_NewLocalFile(int /*long*/ path, int followLinks, int /*long*/[] result) {
+ lock.lock();
+ try {
+ return _NS_NewLocalFile(path, followLinks, result);
+ } finally {
+ lock.unlock();
+ }
+}
+/** @method flags=new */
+public static final native int /*long*/ _nsEmbedCString_new();
+public static final int /*long*/ nsEmbedCString_new() {
+ lock.lock();
+ try {
+ return _nsEmbedCString_new();
+ } finally {
+ lock.unlock();
+ }
+}
+/**
+ * @method flags=new
+ * @param aString cast=(const char *)
+ */
+public static final native int /*long*/ _nsEmbedCString_new(byte[] aString, int length);
+public static final int /*long*/ nsEmbedCString_new(byte[] aString, int length) {
+ lock.lock();
+ try {
+ return _nsEmbedCString_new(aString, length);
+ } finally {
+ lock.unlock();
+ }
+}
+/**
+ * @method flags=new
+ * @param aString cast=(const char *)
+ */
+public static final native int /*long*/ _nsEmbedCString_new(int /*long*/ aString, int length);
+public static final int /*long*/ nsEmbedCString_new(int /*long*/ aString, int length) {
+ lock.lock();
+ try {
+ return _nsEmbedCString_new(aString, length);
+ } finally {
+ lock.unlock();
+ }
+}
+/**
+ * @method flags=delete
+ * @param ptr cast=(nsEmbedCString *)
+ */
+public static final native void _nsEmbedCString_delete(int /*long*/ ptr);
+public static final void nsEmbedCString_delete(int /*long*/ ptr) {
+ lock.lock();
+ try {
+ _nsEmbedCString_delete(ptr);
+ } finally {
+ lock.unlock();
+ }
+}
+/**
+ * @method flags=cpp
+ * @param ptr cast=(nsEmbedCString *)
+ */
+public static final native int _nsEmbedCString_Length(int /*long*/ ptr);
+public static final int nsEmbedCString_Length(int /*long*/ ptr) {
+ lock.lock();
+ try {
+ return _nsEmbedCString_Length(ptr);
+ } finally {
+ lock.unlock();
+ }
+}
+/**
+ * @method flags=cpp
+ * @param ptr cast=(nsIScriptGlobalObject *)
+ */
+public static final native int _nsIScriptGlobalObject_EnsureScriptEnvironment(int /*long*/ ptr, int lang);
+public static final int nsIScriptGlobalObject_EnsureScriptEnvironment(int /*long*/ ptr, int lang) {
+ lock.lock();
+ try {
+ return _nsIScriptGlobalObject_EnsureScriptEnvironment(ptr, lang);
+ } finally {
+ lock.unlock();
+ }
+}
+/**
+ * @method flags=cpp
+ * @param ptr cast=(nsIScriptGlobalObject *)
+ */
+public static final native int /*long*/ _nsIScriptGlobalObject_GetScriptGlobal(int /*long*/ ptr, int lang);
+public static final int /*long*/ nsIScriptGlobalObject_GetScriptGlobal(int /*long*/ ptr, int lang) {
+ lock.lock();
+ try {
+ return _nsIScriptGlobalObject_GetScriptGlobal(ptr, lang);
+ } finally {
+ lock.unlock();
+ }
+}
+/**
+ * @method flags=cpp
+ * @param ptr cast=(nsIScriptGlobalObject *)
+ */
+public static final native int /*long*/ _nsIScriptGlobalObject_GetScriptContext(int /*long*/ ptr, int lang);
+public static final int /*long*/ nsIScriptGlobalObject_GetScriptContext(int /*long*/ ptr, int lang) {
+ lock.lock();
+ try {
+ return _nsIScriptGlobalObject_GetScriptContext(ptr, lang);
+ } finally {
+ lock.unlock();
+ }
+}
+/**
+ * @method flags=cpp
+ * @param ptr cast=(nsIScriptContext *)
+ */
+public static final native int /*long*/ _nsIScriptContext_GetNativeContext(int /*long*/ ptr);
+public static final int /*long*/ nsIScriptContext_GetNativeContext(int /*long*/ ptr) {
+ lock.lock();
+ try {
+ return _nsIScriptContext_GetNativeContext(ptr);
+ } finally {
+ lock.unlock();
+ }
+}
+
+/**
+ * @method flags=cpp
+ * @param ptr cast=(nsEmbedCString *)
+ */
+public static final native int /*long*/ _nsEmbedCString_get(int /*long*/ ptr);
+public static final int /*long*/ nsEmbedCString_get(int /*long*/ ptr) {
+ lock.lock();
+ try {
+ return _nsEmbedCString_get(ptr);
+ } finally {
+ lock.unlock();
+ }
+}
+/**
+ * @method flags=delete
+ * @param ptr cast=(nsID *)
+ */
+public static final native void _nsID_delete(int /*long*/ ptr);
+public static final void nsID_delete(int /*long*/ ptr) {
+ lock.lock();
+ try {
+ _nsID_delete(ptr);
+ } finally {
+ lock.unlock();
+ }
+}
+/** @method flags=new */
+public static final native int /*long*/ _nsID_new();
+public static final int /*long*/ nsID_new() {
+ lock.lock();
+ try {
+ return _nsID_new();
+ } finally {
+ lock.unlock();
+ }
+}
+/**
+ * @method flags=cpp
+ * @param ptr cast=(nsID *)
+ * @param other cast=(nsID *),flags=struct
+ */
+public static final native int _nsID_Equals(int /*long*/ ptr, int /*long*/ other);
+public static final int nsID_Equals(int /*long*/ ptr, int /*long*/ other) {
+ lock.lock();
+ try {
+ return _nsID_Equals(ptr, other);
+ } finally {
+ lock.unlock();
+ }
+}
+/** @method flags=new */
+public static final native int /*long*/ _nsEmbedString_new();
+public static final int /*long*/ nsEmbedString_new() {
+ lock.lock();
+ try {
+ return _nsEmbedString_new();
+ } finally {
+ lock.unlock();
+ }
+}
+/**
+ * @method flags=new
+ * @param aString cast=(PRUnichar *)
+ */
+public static final native int /*long*/ _nsEmbedString_new(char[] aString);
+public static final int /*long*/ nsEmbedString_new(char[] aString) {
+ lock.lock();
+ try {
+ return _nsEmbedString_new(aString);
+ } finally {
+ lock.unlock();
+ }
+}
+/**
+ * @method flags=delete
+ * @param ptr cast=(nsEmbedString *)
+ */
+public static final native void _nsEmbedString_delete(int /*long*/ ptr);
+public static final void nsEmbedString_delete(int /*long*/ ptr) {
+ lock.lock();
+ try {
+ _nsEmbedString_delete(ptr);
+ } finally {
+ lock.unlock();
+ }
+}
+/**
+ * @method flags=cpp
+ * @param ptr cast=(nsEmbedString *)
+ */
+public static final native int _nsEmbedString_Length(int /*long*/ ptr);
+public static final int nsEmbedString_Length(int /*long*/ ptr) {
+ lock.lock();
+ try {
+ return _nsEmbedString_Length(ptr);
+ } finally {
+ lock.unlock();
+ }
+}
+/**
+ * @method flags=cpp
+ * @param ptr cast=(nsEmbedString *)
+ */
+public static final native int /*long*/ _nsEmbedString_get(int /*long*/ ptr);
+public static final int /*long*/ nsEmbedString_get(int /*long*/ ptr) {
+ lock.lock();
+ try {
+ return _nsEmbedString_get(ptr);
+ } finally {
+ lock.unlock();
+ }
+}
+/**
+ * @method flags=cpp
+ * @param ptr cast=(nsIMemory *)
+ * @param size cast=(size_t)
+ */
+public static final native int /*long*/ _nsIMemory_Alloc(int /*long*/ ptr, int size);
+public static final int /*long*/ nsIMemory_Alloc(int /*long*/ ptr, int size) {
+ lock.lock();
+ try {
+ return _nsIMemory_Alloc(ptr, size);
+ } finally {
+ lock.unlock();
+ }
+}
+/**
+ * @method flags=cpp
+ * @param ptr1 cast=(nsIMemory *)
+ * @param ptr2 cast=(void *)
+ * @param size cast=(size_t)
+ */
+public static final native int /*long*/ _nsIMemory_Realloc(int /*long*/ ptr1, int /*long*/ ptr2, int size);
+public static final int /*long*/ nsIMemory_Realloc(int /*long*/ ptr1, int /*long*/ ptr2, int size) {
+ lock.lock();
+ try {
+ return _nsIMemory_Realloc(ptr1, ptr2, size);
+ } finally {
+ lock.unlock();
+ }
+}
+/** @param functionLoad cast=(const nsDynamicFunctionLoad *) */
+public static final native int _XPCOMGlueLoadXULFunctions (int /*long*/ functionLoad);
+public static final int XPCOMGlueLoadXULFunctions (int /*long*/ functionLoad) {
+ lock.lock();
+ try {
+ return _XPCOMGlueLoadXULFunctions(functionLoad);
+ } finally {
+ lock.unlock();
+ }
+}
+/** @param place cast=(const char *) */
+public static final native int _XPCOMGlueStartup(byte[] place);
+public static final int XPCOMGlueStartup(byte[] place) {
+ lock.lock();
+ try {
+ return _XPCOMGlueStartup(place);
+ } finally {
+ lock.unlock();
+ }
+}
+public static final native int _XPCOMGlueShutdown();
+public static final int XPCOMGlueShutdown() {
+ lock.lock();
+ try {
+ return _XPCOMGlueShutdown();
+ } finally {
+ lock.unlock();
+ }
+}
+
+public static final native int _Call(int /*long*/ ptr);
+public static final int Call(int /*long*/ ptr) {
+ lock.lock();
+ try {
+ return _Call(ptr);
+ } finally {
+ lock.unlock();
+ }
+}
+
+/**
+ * @param ptr cast=(nsWriteSegmentFun)
+ * @param aInStream cast=(nsIInputStream *)
+ * @param aClosure cast=(void *)
+ * @param aFromSegment cast=(const char *)
+ * @param aWriteCount cast=(PRUint32 *)
+ */
+public static final native int /*long*/ _Call(int /*long*/ ptr, int /*long*/ aInStream, int /*long*/ aClosure, byte[] aFromSegment, int aToOffset, int aCount, int[] aWriteCount);
+public static final int /*long*/ Call(int /*long*/ ptr, int /*long*/ aInStream, int /*long*/ aClosure, byte[] aFromSegment, int aToOffset, int aCount, int[] aWriteCount) {
+ lock.lock();
+ try {
+ return _Call(ptr, aInStream, aClosure, aFromSegment, aToOffset, aCount, aWriteCount);
+ } finally {
+ lock.unlock();
+ }
+}
+
+/**
+ * @param ptr cast=(SWT_XREInitEmbedding)
+ * @param aLibXULDirectory cast=(nsILocalFile *)
+ * @param aAppDirectory cast=(nsILocalFile *)
+ * @param aAppDirProvider cast=(nsIDirectoryServiceProvider *)
+ * @param aStaticComponents cast=(nsStaticModuleInfo const *)
+ */
+public static final native int _Call(int /*long*/ ptr, int /*long*/ aLibXULDirectory, int /*long*/ aAppDirectory, int /*long*/ aAppDirProvider, int /*long*/ aStaticComponents, int aStaticComponentsCount);
+public static final int Call(int /*long*/ ptr, int /*long*/ aLibXULDirectory, int /*long*/ aAppDirectory, int /*long*/ aAppDirProvider, int /*long*/ aStaticComponents, int aStaticComponentsCount) {
+ lock.lock();
+ try {
+ return _Call(ptr, aLibXULDirectory, aAppDirectory, aAppDirProvider, aStaticComponents, aStaticComponentsCount);
+ } finally {
+ lock.unlock();
+ }
+}
+
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl);
+ } finally {
+ lock.unlock();
+ }
+}
+
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, char[] arg0);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, char[] arg0) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, double arg0);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, double arg0) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, float arg0);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, float arg0) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, float[] arg0);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, float[] arg0) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int[] arg0);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int[] arg0) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long[] arg0);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long[] arg0) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, short[] arg0);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, short[] arg0) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0);
+ } finally {
+ lock.unlock();
+ }
+}
+
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, int arg1);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, int arg1) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int[] arg1);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int[] arg1) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long [] arg1);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long [] arg1) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, int[] arg1);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, int[] arg1) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, int[] arg1);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, int[] arg1) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, long[] arg1);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, long[] arg1) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, long arg1);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, long arg1) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, int arg1);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, int arg1) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, nsID arg1);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, nsID arg1) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, nsID arg1);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, nsID arg1) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, char[] arg1);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, char[] arg1) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int[] arg0, int[] arg1);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int[] arg0, int[] arg1) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int[] arg0, long[] arg1);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int[] arg0, long[] arg1) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, nsID arg0, int arg1);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, nsID arg0, int arg1) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, nsID arg0, long arg1);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, nsID arg0, long arg1) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, nsID arg0, int[] arg1);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, nsID arg0, int[] arg1) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, nsID arg0, long[] arg1);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, nsID arg0, long[] arg1) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, char[] arg0, char[] arg1);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, char[] arg0, char[] arg1) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, byte[] arg1);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, byte[] arg1) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, byte[] arg1);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, byte[] arg1) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, byte[] arg1);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, byte[] arg1) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1);
+ } finally {
+ lock.unlock();
+ }
+}
+
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, char[] arg1, int arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, char[] arg1, int arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, char[] arg1, int[] arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, char[] arg1, int[] arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, char[] arg1, long[] arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, char[] arg1, long[] arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, char[] arg1, int arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, char[] arg1, int arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int[] arg0, int[] arg1, int[] arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int[] arg0, int[] arg1, int[] arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long [] arg0, long [] arg1);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long [] arg0, long [] arg1) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long [] arg0, long [] arg1, long [] arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long [] arg0, long [] arg1, long [] arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, short arg0, int arg1, int arg2, int arg3);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, short arg0, int arg1, int arg2, int arg3) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, short arg0, long arg1, int arg2, long arg3);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, short arg0, long arg1, int arg2, long arg3) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3);
+ } finally {
+ lock.unlock();
+ }
+}
+
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int[] arg0, long[] arg1, int[] arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int[] arg0, long[] arg1, int[] arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int[] arg0, long[] arg1, long [] arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int[] arg0, long[] arg1, long [] arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, int arg1, int[] arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, int arg1, int[] arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, long arg1, int[] arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, long arg1, int[] arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, nsID arg1, long [] arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, nsID arg1, long [] arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, nsID arg1, int[] arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, nsID arg1, int[] arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, char[] arg0, int arg1, int[] arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, char[] arg0, int arg1, int[] arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, char[] arg0, long arg1, long [] arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, char[] arg0, long arg1, long [] arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, char[] arg1, char[] arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, char[] arg1, char[] arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, char[] arg1, char[] arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, char[] arg1, char[] arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, long arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, long arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, int arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, int arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, long arg1, long arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, long arg1, long arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, long[] arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, long[] arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int[] arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int[] arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, long[] arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, long[] arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, int arg1, long [] arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, int arg1, long [] arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, int[] arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, int[] arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, nsID arg1, int[] arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, nsID arg1, int[] arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, nsID arg1, long [] arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, nsID arg1, long [] arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, char[] arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, char[] arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, nsID arg0, nsID arg1, long[] arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, nsID arg0, nsID arg1, long[] arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, nsID arg0, nsID arg1, int[] arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, nsID arg0, nsID arg1, int[] arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, byte[] arg1, int[] arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, byte[] arg1, int[] arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, byte[] arg1, long[] arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, byte[] arg1, long[] arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, int[] arg1, int[] arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, int[] arg1, int[] arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, int[] arg1, long[] arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, int[] arg1, long[] arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, long[] arg1, int[] arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, long[] arg1, int[] arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, nsID arg1, int arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, nsID arg1, int arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, nsID arg1, long arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, nsID arg1, long arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, byte[] arg1, char[] arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, byte[] arg1, char[] arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, byte[] arg1, char[] arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, byte[] arg1, char[] arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, byte[] arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, byte[] arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, byte[] arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, byte[] arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, byte[] arg1, int arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, byte[] arg1, int arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, byte[] arg1, int[] arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, byte[] arg1, int[] arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, byte[] arg1, long arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, byte[] arg1, long arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, byte[] arg1, int arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, byte[] arg1, int arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, byte[] arg1, int arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, byte[] arg1, int arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, byte[] arg1, short arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, byte[] arg1, short arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, byte[] arg1, short arg2);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, byte[] arg1, short arg2) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2);
+ } finally {
+ lock.unlock();
+ }
+}
+
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, int arg1, nsID arg2, int[] arg3);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, int arg1, nsID arg2, int[] arg3) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, long arg1, nsID arg2, long[] arg3);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, long arg1, nsID arg2, long[] arg3) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, byte[] arg1, int arg2, int[] arg3);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, byte[] arg1, int arg2, int[] arg3) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, byte[] arg1, long arg2, long[] arg3);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, byte[] arg1, long arg2, long[] arg3) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, char[] arg1, char[] arg2, int[] arg3);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, char[] arg1, char[] arg2, int[] arg3) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, char[] arg1, char[] arg2, long [] arg3);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, char[] arg1, char[] arg2, long [] arg3) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, char[] arg1, char[] arg2, int[] arg3);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, char[] arg1, char[] arg2, int[] arg3) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int arg2, char[] arg3);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int arg2, char[] arg3) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, int arg2, char[] arg3);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, int arg2, char[] arg3) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int arg2, int arg3);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int arg2, int arg3) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, int arg2, int arg3);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, int arg2, int arg3) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, long arg2, int arg3);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, long arg2, int arg3) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int arg2, int[] arg3);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int arg2, int[] arg3) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, long arg2, long[] arg3);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, long arg2, long[] arg3) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, int arg2, int[] arg3);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, int arg2, int[] arg3) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int[] arg0, int[] arg1, int[] arg2, int[] arg3);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int[] arg0, int[] arg1, int[] arg2, int[] arg3) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, nsID arg0, byte[] arg1, byte[] arg2, int arg3);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, nsID arg0, byte[] arg1, byte[] arg2, int arg3) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, nsID arg0, byte[] arg1, byte[] arg2, long arg3);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, nsID arg0, byte[] arg1, byte[] arg2, long arg3) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, nsID arg0, int arg1, nsID arg2, int[] arg3);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, nsID arg0, int arg1, nsID arg2, int[] arg3) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, nsID arg0, long arg1, nsID arg2, long [] arg3);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, nsID arg0, long arg1, nsID arg2, long [] arg3) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, int arg1, int[] arg2, int[] arg3);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, int arg1, int[] arg2, int[] arg3) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, int arg1, long [] arg2, int[] arg3);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, int arg1, long [] arg2, int[] arg3) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, byte[] arg2, byte[] arg3);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, byte[] arg2, byte[] arg3) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, byte[] arg2, byte[] arg3);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, byte[] arg2, byte[] arg3) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, byte[] arg2, int arg3);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, byte[] arg2, int arg3) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, byte[] arg2, long arg3);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, byte[] arg2, long arg3) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, short[] arg0, int arg1, int[] arg2, int[] arg3);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, short[] arg0, int arg1, int[] arg2, int[] arg3) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, short[] arg0, long arg1, int[] arg2, long[] arg3);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, short[] arg0, long arg1, int[] arg2, long[] arg3) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3);
+ } finally {
+ lock.unlock();
+ }
+}
+
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, char[] arg0, int arg1, int arg2, int arg3, int arg4);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, char[] arg0, int arg1, int arg2, int arg3, int arg4) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, char[] arg0, int arg1, long arg2, long arg3, long arg4);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, char[] arg0, int arg1, long arg2, long arg3, long arg4) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, long arg2, long arg3, long arg4);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, long arg2, long arg3, long arg4) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int arg2, int arg3, int arg4);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int arg2, int arg3, int arg4) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int[] arg1, int[] arg2, int[] arg3, int[] arg4);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int[] arg1, int[] arg2, int[] arg3, int[] arg4) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, char[] arg1, char[] arg2, char[] arg3, int[] arg4);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, char[] arg1, char[] arg2, char[] arg3, int[] arg4) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, char[] arg1, char[] arg2, char[] arg3, int[] arg4);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, char[] arg1, char[] arg2, char[] arg3, int[] arg4) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, int arg1, int arg2, int[] arg3, int[] arg4);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, int arg1, int arg2, int[] arg3, int[] arg4) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, int arg1, long arg2, long [] arg3, int[] arg4);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, int arg1, long arg2, long [] arg3, int[] arg4) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, byte[] arg2, int arg3, int arg4);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, byte[] arg2, int arg3, int arg4) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4);
+ } finally {
+ lock.unlock();
+ }
+}
+
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, byte[] arg2, long arg3, int arg4);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, byte[] arg2, long arg3, int arg4) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, nsID arg1, int arg2, int arg3, int[] arg4);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, nsID arg1, int arg2, int arg3, int[] arg4) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, nsID arg1, long arg2, long arg3, long[] arg4);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, nsID arg1, long arg2, long arg3, long[] arg4) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4);
+ } finally {
+ lock.unlock();
+ }
+}
+
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, byte[] arg1, byte[] arg2, byte[] arg3, int arg4, int[] arg5);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, byte[] arg1, byte[] arg2, byte[] arg3, int arg4, int[] arg5) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, byte[] arg1, byte[] arg2, byte[] arg3, long arg4, long[] arg5);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, byte[] arg1, byte[] arg2, byte[] arg3, long arg4, long[] arg5) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, char[] arg2, int arg3, long arg4, int arg5);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, char[] arg2, int arg3, long arg4, int arg5) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, char[] arg2, int arg3, long arg4, int arg5);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, char[] arg2, int arg3, long arg4, int arg5) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, char[] arg2, long arg3, long arg4, long arg5);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, char[] arg2, long arg3, long arg4, long arg5) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, char[] arg2, long arg3, long arg4, long arg5);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, char[] arg2, long arg3, long arg4, long arg5) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int[] arg0, int[] arg1, int[] arg2, int[] arg3, int[] arg4, int[] arg5);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int[] arg0, int[] arg1, int[] arg2, int[] arg3, int[] arg4, int[] arg5) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5);
+ } finally {
+ lock.unlock();
+ }
+}
+
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long[] arg0, long[] arg1, long[] arg2, long[] arg3, long[] arg4, int[] arg5);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long[] arg0, long[] arg1, long[] arg2, long[] arg3, long[] arg4, int[] arg5) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, int arg2, int arg3, int arg4, int arg5);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, int arg2, int arg3, int arg4, int arg5) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int arg2, int arg3, int arg4, int[] arg5);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int arg2, int arg3, int arg4, int [] arg5) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5);
+ } finally {
+ lock.unlock();
+ }
+}
+
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, long arg2, long arg3, long arg4, long[] arg5);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, long arg2, long arg3, long arg4, long[] arg5) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, nsID arg0, byte[] arg1, byte[] arg2, int arg3, byte[] arg4, byte[] arg5);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, nsID arg0, byte[] arg1, byte[] arg2, int arg3, byte[] arg4, byte[] arg5) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, nsID arg0, byte[] arg1, byte[] arg2, long arg3, byte[] arg4, byte[] arg5);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, nsID arg0, byte[] arg1, byte[] arg2, long arg3, byte[] arg4, byte[] arg5) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, long arg2, long arg3, long arg4, long arg5);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, long arg2, long arg3, long arg4, long arg5) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, long arg2, long arg3, long arg4, long arg5);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, long arg2, long arg3, long arg4, long arg5) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, char[] arg1, char[] arg2, char[] arg3, int[] arg4, int[] arg5);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, char[] arg1, char[] arg2, char[] arg3, int[] arg4, int[] arg5) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, char[] arg1, char[] arg2, char[] arg3, int[] arg4, int[] arg5);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, char[] arg1, char[] arg2, char[] arg3, int[] arg4, int[] arg5) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, byte[] arg1, byte[] arg2, int arg3, int arg4, int[] arg5);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, byte[] arg1, byte[] arg2, int arg3, int arg4, int[] arg5) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, byte[] arg1, byte[] arg2, int arg3, int arg4, long[] arg5);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, byte[] arg0, byte[] arg1, byte[] arg2, int arg3, int arg4, long[] arg5) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int arg2, int arg3, int[] arg4, int[] arg5);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int arg2, int arg3, int[] arg4, int[] arg5) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, int arg1, int arg2, long arg3, int[] arg4, long [] arg5);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, int arg1, int arg2, long arg3, int[] arg4, long [] arg5) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, char[] arg2, char[] arg3, int arg4, int [] arg5);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, char[] arg2, char[] arg3, int arg4, int [] arg5) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, char[] arg2, char[] arg3, int arg4, long[] arg5);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, char[] arg2, char[] arg3, int arg4, long[] arg5) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int arg2, byte[] arg3, byte[] arg4, int arg5);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int arg2, byte[] arg3, byte[] arg4, int arg5) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, long arg2, byte[] arg3, byte[] arg4, long arg5);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, long arg2, byte[] arg3, byte[] arg4, long arg5) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5);
+ } finally {
+ lock.unlock();
+ }
+}
+
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, char[] arg1, char[] arg2, int arg3, int[] arg4, int[] arg5, int[] arg6);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, char[] arg1, char[] arg2, int arg3, int[] arg4, int[] arg5, int[] arg6) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5, arg6);
+ } finally {
+ lock.unlock();
+ }
+}
+
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, char[] arg1, char[] arg2, int arg3, long[] arg4, int[] arg5, int[] arg6);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, char[] arg1, char[] arg2, int arg3, long[] arg4, int[] arg5, int[] arg6) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5, arg6);
+ } finally {
+ lock.unlock();
+ }
+}
+
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, char[] arg1, char[] arg2, int[] arg3, char[] arg4, int[] arg5, int[] arg6);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, char[] arg1, char[] arg2, int[] arg3, char[] arg4, int[] arg5, int[] arg6) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5, arg6);
+ } finally {
+ lock.unlock();
+ }
+}
+
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, char[] arg1, char[] arg2, long[] arg3, char[] arg4, int[] arg5, int[] arg6);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, char[] arg1, char[] arg2, long[] arg3, char[] arg4, int[] arg5, int[] arg6) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5, arg6);
+ } finally {
+ lock.unlock();
+ }
+}
+
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int arg2, int arg3, char[] arg4, int[] arg5, int[] arg6);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int arg2, int arg3, char[] arg4, int[] arg5, int[] arg6) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5, arg6);
+ } finally {
+ lock.unlock();
+ }
+}
+
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, int arg2, long arg3, char[] arg4, int[] arg5, int[] arg6);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, int arg2, long arg3, char[] arg4, int[] arg5, int[] arg6) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5, arg6);
+ } finally {
+ lock.unlock();
+ }
+}
+
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int arg2, int arg3, long arg4, int arg5, int arg6);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int arg2, int arg3, long arg4, int arg5, int arg6) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5, arg6);
+ } finally {
+ lock.unlock();
+ }
+}
+
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, long arg2, long arg3, long arg4, long arg5, long arg6);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, long arg2, long arg3, long arg4, long arg5, long arg6) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5, arg6);
+ } finally {
+ lock.unlock();
+ }
+}
+
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, char[] arg1, char[] arg2, int[] arg3, int[] arg4, char[] arg5, int[] arg6, int[] arg7);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, char[] arg1, char[] arg2, int[] arg3, int[] arg4, char[] arg5, int[] arg6, int[] arg7) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, char[] arg1, char[] arg2, long[] arg3, long [] arg4, char[] arg5, int[] arg6, int[] arg7);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, char[] arg1, char[] arg2, long[] arg3, long [] arg4, char[] arg5, int[] arg6, int[] arg7) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int[] arg7);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int[] arg7) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, long arg1, long arg2, long arg3, long arg4, long arg5, long arg6, long[] arg7);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, long arg1, long arg2, long arg3, long arg4, long arg5, long arg6, long[] arg7) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
+ } finally {
+ lock.unlock();
+ }
+}
+
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, char[] arg6, int[] arg7, int[] arg8);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, char[] arg6, int[] arg7, int[] arg8) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, long arg2, long arg3, int arg4, long arg5, char[] arg6, int[] arg7, long [] arg8);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, long arg2, long arg3, int arg4, long arg5, char[] arg6, int[] arg7, long [] arg8) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, int arg8, int arg9);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, int arg8, int arg9) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, int arg1, int arg2, long arg3, int arg4, int arg5, int arg6, int arg7, int arg8, int arg9);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, int arg1, int arg2, long arg3, int arg4, int arg5, int arg6, int arg7, int arg8, int arg9) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, char[] arg1, char[] arg2, int arg3, char[] arg4, char[] arg5, char[] arg6, char[] arg7, int[] arg8, int[] arg9);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, char[] arg1, char[] arg2, int arg3, char[] arg4, char[] arg5, char[] arg6, char[] arg7, int[] arg8, int[] arg9) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, char[] arg1, char[] arg2, int arg3, char[] arg4, char[] arg5, char[] arg6, char[] arg7, int[] arg8, int[] arg9);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, char[] arg1, char[] arg2, int arg3, char[] arg4, char[] arg5, char[] arg6, char[] arg7, int[] arg8, int[] arg9) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int arg2, int arg3, char[] arg4, int arg5, int arg6, int arg7, int arg8, int arg9, int[] arg10, int[] arg11);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int arg2, int arg3, char[] arg4, int arg5, int arg6, int arg7, int arg8, int arg9, int[] arg10, int[] arg11) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, long arg2, int arg3, char[] arg4, long arg5, long arg6, int arg7, long arg8, int arg9, long [] arg10, long [] arg11);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, long arg2, int arg3, char[] arg4, long arg5, long arg6, int arg7, long arg8, int arg9, long [] arg10, long [] arg11) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int arg2, int arg3, char[] arg4, byte[] arg5, int arg6, int arg7, int arg8, int arg9, int arg10, int[] arg11, int[] arg12);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int arg2, int arg3, char[] arg4, byte[] arg5, int arg6, int arg7, int arg8, int arg9, int arg10, int[] arg11, int[] arg12) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, long arg2, int arg3, char[] arg4, byte[] arg5, long arg6, long arg7, int arg8, long arg9, int arg10, long [] arg11, long [] arg12);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, long arg1, long arg2, int arg3, char[] arg4, byte[] arg5, long arg6, long arg7, int arg8, long arg9, int arg10, long [] arg11, long [] arg12) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, int arg8, int arg9, int arg10, int arg11, int arg12, short arg13, int arg14);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, int arg8, int arg9, int arg10, int arg11, int arg12, short arg13, int arg14) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14);
+ } finally {
+ lock.unlock();
+ }
+}
+static final native int _VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, int arg1, int arg2, long arg3, int arg4, int arg5, int arg6, int arg7, int arg8, int arg9, int arg10, int arg11, int arg12, short arg13, long arg14);
+static final int VtblCall(int fnNumber, int /*long*/ ppVtbl, long arg0, int arg1, int arg2, long arg3, int arg4, int arg5, int arg6, int arg7, int arg8, int arg9, int arg10, int arg11, int arg12, short arg13, long arg14) {
+ lock.lock();
+ try {
+ return _VtblCall(fnNumber, ppVtbl, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12, arg13, arg14);
+ } finally {
+ lock.unlock();
+ }
+}
+
+/**
+ * @method flags=no_gen
+ */
+public static final native int GetAddress(int ptr, int index);
+
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/XPCOMObject.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/XPCOMObject.java
new file mode 100644
index 0000000000..bc22e54b87
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/XPCOMObject.java
@@ -0,0 +1,1031 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swt.internal.mozilla;
+
+import java.util.*;
+import org.eclipse.swt.*;
+import org.eclipse.swt.internal.*;
+
+public class XPCOMObject {
+ static boolean IsSolaris;
+ static {
+ String osName = System.getProperty ("os.name").toLowerCase (); //$NON-NLS-1$
+ IsSolaris = osName.startsWith ("sunos") || osName.startsWith("solaris"); //$NON-NLS-1$
+ }
+
+ private int /*long*/ ppVtable;
+
+ static private final int MAX_ARG_COUNT = 12;
+ static private final int MAX_VTABLE_LENGTH = 80;
+ static final int OS_OFFSET = IsSolaris ? 2 : 0;
+ static private Callback[][] Callbacks = new Callback[MAX_VTABLE_LENGTH + OS_OFFSET][MAX_ARG_COUNT];
+ static private Hashtable ObjectMap = new Hashtable ();
+
+
+public XPCOMObject (int[] argCounts) {
+ int /*long*/[] callbackAddresses = new int /*long*/[argCounts.length + OS_OFFSET];
+ synchronized (Callbacks) {
+ for (int i = 0, length = argCounts.length; i < length; i++) {
+ if ((Callbacks[i + OS_OFFSET][argCounts[i]]) == null) {
+ Callbacks[i + OS_OFFSET][argCounts[i]] = new Callback (getClass (), "callback"+i, argCounts[i] + 1, true, XPCOM.NS_ERROR_FAILURE); //$NON-NLS-1$
+ }
+ callbackAddresses[i + OS_OFFSET] = Callbacks[i + OS_OFFSET][argCounts[i]].getAddress ();
+ if (callbackAddresses[i + OS_OFFSET] == 0) SWT.error (SWT.ERROR_NO_MORE_CALLBACKS);
+ }
+ }
+
+ int /*long*/ pVtable = C.malloc (C.PTR_SIZEOF * (argCounts.length + OS_OFFSET));
+ XPCOM.memmove (pVtable, callbackAddresses, C.PTR_SIZEOF * (argCounts.length + OS_OFFSET));
+ ppVtable = C.malloc (C.PTR_SIZEOF);
+ XPCOM.memmove (ppVtable, new int /*long*/[] {pVtable}, C.PTR_SIZEOF);
+ ObjectMap.put (new LONG (ppVtable), this);
+}
+
+static int /*long*/ callback0 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method0 (args);
+}
+static int /*long*/ callback1 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method1 (args);
+}
+static int /*long*/ callback10 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method10 (args);
+}
+static int /*long*/ callback11 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method11 (args);
+}
+static int /*long*/ callback12 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method12 (args);
+}
+static int /*long*/ callback13 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method13 (args);
+}
+static int /*long*/ callback14 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method14 (args);
+}
+static int /*long*/ callback15 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method15 (args);
+}
+static int /*long*/ callback16 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method16 (args);
+}
+static int /*long*/ callback17 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method17 (args);
+}
+static int /*long*/ callback18 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method18 (args);
+}
+static int /*long*/ callback19 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method19 (args);
+}
+static int /*long*/ callback2 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method2 (args);
+}
+static int /*long*/ callback20 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method20 (args);
+}
+static int /*long*/ callback21 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method21 (args);
+}
+static int /*long*/ callback22 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method22 (args);
+}
+static int /*long*/ callback23 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method23 (args);
+}
+static int /*long*/ callback24 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method24 (args);
+}
+static int /*long*/ callback25 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method25 (args);
+}
+static int /*long*/ callback26 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method26 (args);
+}
+static int /*long*/ callback27 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method27 (args);
+}
+static int /*long*/ callback28 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method28 (args);
+}
+static int /*long*/ callback29 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method29 (args);
+}
+static int /*long*/ callback3 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method3 (args);
+}
+static int /*long*/ callback30 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method30 (args);
+}
+static int /*long*/ callback31 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method31 (args);
+}
+static int /*long*/ callback32 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method32 (args);
+}
+static int /*long*/ callback33 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method33 (args);
+}
+static int /*long*/ callback34 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method34 (args);
+}
+static int /*long*/ callback35 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method35 (args);
+}
+static int /*long*/ callback36 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method36 (args);
+}
+static int /*long*/ callback37 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method37 (args);
+}
+static int /*long*/ callback38 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method38 (args);
+}
+static int /*long*/ callback39 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method39 (args);
+}
+static int /*long*/ callback4 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method4 (args);
+}
+static int /*long*/ callback40 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method40 (args);
+}
+static int /*long*/ callback41 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method41 (args);
+}
+static int /*long*/ callback42 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method42 (args);
+}
+static int /*long*/ callback43 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method43 (args);
+}
+static int /*long*/ callback44 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method44 (args);
+}
+static int /*long*/ callback45 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method45 (args);
+}
+static int /*long*/ callback46 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method46 (args);
+}
+static int /*long*/ callback47 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method47 (args);
+}
+static int /*long*/ callback48 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method48 (args);
+}
+static int /*long*/ callback49 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method49 (args);
+}
+static int /*long*/ callback5 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method5 (args);
+}
+static int /*long*/ callback50 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method50 (args);
+}
+static int /*long*/ callback51 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method51 (args);
+}
+static int /*long*/ callback52 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method52 (args);
+}
+static int /*long*/ callback53 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method53 (args);
+}
+static int /*long*/ callback54 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method54 (args);
+}
+static int /*long*/ callback55 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method55 (args);
+}
+static int /*long*/ callback56 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method56 (args);
+}
+static int /*long*/ callback57 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method57 (args);
+}
+static int /*long*/ callback58 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method58 (args);
+}
+static int /*long*/ callback59 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method59 (args);
+}
+static int /*long*/ callback6 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method6 (args);
+}
+static int /*long*/ callback60 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method60 (args);
+}
+static int /*long*/ callback61 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method61 (args);
+}
+static int /*long*/ callback62 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method62 (args);
+}
+static int /*long*/ callback63 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method63 (args);
+}
+static int /*long*/ callback64 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method64 (args);
+}
+static int /*long*/ callback65 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method65 (args);
+}
+static int /*long*/ callback66 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method66 (args);
+}
+static int /*long*/ callback67 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method67 (args);
+}
+static int /*long*/ callback68 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method68 (args);
+}
+static int /*long*/ callback69 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method69 (args);
+}
+static int /*long*/ callback7 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method7 (args);
+}
+static int /*long*/ callback70 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method70 (args);
+}
+static int /*long*/ callback71 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method71 (args);
+}
+static int /*long*/ callback72 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method72 (args);
+}
+static int /*long*/ callback73 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method73 (args);
+}
+static int /*long*/ callback74 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method74 (args);
+}
+static int /*long*/ callback75 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method75 (args);
+}
+static int /*long*/ callback76 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method76 (args);
+}
+static int /*long*/ callback77 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method77 (args);
+}
+static int /*long*/ callback78 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method78 (args);
+}
+static int /*long*/ callback79 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method79 (args);
+}
+static int /*long*/ callback8 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method8 (args);
+}
+static int /*long*/ callback9 (int /*long*/[] callbackArgs) {
+ // find the object on which this call was invoked
+ int /*long*/ address = callbackArgs[0];
+ Object object = ObjectMap.get (new LONG (address));
+ if (object == null) return XPCOM.NS_ERROR_FAILURE;
+ int /*long*/[] args = new int /*long*/[callbackArgs.length - 1];
+ System.arraycopy (callbackArgs, 1, args, 0, args.length);
+ return ((XPCOMObject) object).method9 (args);
+}
+
+public void dispose() {
+ // free the memory for this reference
+ int /*long*/[] pVtable = new int /*long*/[1];
+ XPCOM.memmove (pVtable, ppVtable, C.PTR_SIZEOF);
+ C.free (pVtable[0]);
+ C.free (ppVtable);
+
+ // remove this ppVtable from the list
+ ObjectMap.remove (new LONG (ppVtable));
+
+ ppVtable = 0;
+}
+
+public int /*long*/ getAddress () {
+ return ppVtable;
+}
+
+public int /*long*/ method0 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method1 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method10 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method11 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method12 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method13 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method14 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method15 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method16 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method17 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method18 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method19 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method2 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method20 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method21 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method22 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method23 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method24 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method25 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method26 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method27 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method28 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method29 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method3 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method30 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method31 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method32 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method33 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method34 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method35 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method36 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method37 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method38 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method39 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method4 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method40 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method41 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method42 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method43 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method44 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method45 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method46 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method47 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method48 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method49 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method5 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method50 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method51 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method52 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method53 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method54 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method55 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method56 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method57 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method58 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method59 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method6 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method60 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method61 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method62 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method63 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method64 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method65 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method66 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method67 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method68 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method69 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method7 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method70 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method71 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method72 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method73 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method74 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method75 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method76 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method77 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method78 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method79 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method8 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+public int /*long*/ method9 (int /*long*/[] args) {
+ return XPCOM.NS_ERROR_NOT_IMPLEMENTED;
+}
+}
+
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/init/GREVersionRange.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/init/GREVersionRange.java
new file mode 100644
index 0000000000..da361dd066
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/init/GREVersionRange.java
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swt.internal.mozilla.init;
+
+/** @jniclass flags=cpp */
+public class GREVersionRange {
+ /** @field cast=(const char *) */
+ public int /*long*/ lower;
+ public boolean lowerInclusive;
+ /** @field cast=(const char *) */
+ public int /*long*/ upper;
+ public boolean upperInclusive;
+ public static final int sizeof = XPCOMInit.GREVersionRange_sizeof();
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/init/XPCOMInit.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/init/XPCOMInit.java
new file mode 100644
index 0000000000..a746934aa5
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/init/XPCOMInit.java
@@ -0,0 +1,71 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2006 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla.init;
+
+import org.eclipse.swt.internal.Platform;
+
+/** @jniclass flags=cpp */
+public class XPCOMInit extends Platform {
+ public static final int PATH_MAX = 4096;
+
+public static final native int GREVersionRange_sizeof ();
+
+/**
+ * @param versions cast=(const GREVersionRange *)
+ * @param properties cast=(const GREProperty *)
+ * @param buffer cast=(char *)
+ */
+public static final native int _GRE_GetGREPathWithProperties (GREVersionRange versions, int versionsLength, int /*long*/ properties, int propertiesLength, int /*long*/ buffer, int buflen);
+public static final int GRE_GetGREPathWithProperties (GREVersionRange versions, int versionsLength, int /*long*/ properties, int propertiesLength, int /*long*/ buffer, int buflen) {
+ lock.lock();
+ try {
+ return _GRE_GetGREPathWithProperties(versions, versionsLength, properties, propertiesLength, buffer, buflen);
+ } finally {
+ lock.unlock();
+ }
+}
+/** @param place cast=(const char *) */
+public static final native int _XPCOMGlueStartup (byte[] place);
+public static final int XPCOMGlueStartup (byte[] place) {
+ lock.lock();
+ try {
+ return _XPCOMGlueStartup(place);
+ } finally {
+ lock.unlock();
+ }
+}
+public static final native int _XPCOMGlueShutdown ();
+public static final int XPCOMGlueShutdown () {
+ lock.lock();
+ try {
+ return _XPCOMGlueShutdown();
+ } finally {
+ lock.unlock();
+ }
+}
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsDynamicFunctionLoad.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsDynamicFunctionLoad.java
new file mode 100644
index 0000000000..7857539770
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsDynamicFunctionLoad.java
@@ -0,0 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swt.internal.mozilla;
+
+public class nsDynamicFunctionLoad {
+ /** @field cast=(const char *) */
+ public int /*long*/ functionName;
+ /** @field cast=(NSFuncPtr *) */
+ public int /*long*/ function;
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsEmbedString.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsEmbedString.java
new file mode 100644
index 0000000000..162a0ad89c
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsEmbedString.java
@@ -0,0 +1,63 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2004 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsEmbedString {
+ int /*long*/ handle;
+
+public nsEmbedString() {
+ handle = XPCOM.nsEmbedString_new();
+}
+
+public nsEmbedString(String string) {
+ if (string != null) {
+ char[] aString = new char[string.length() + 1];
+ string.getChars(0, string.length(), aString, 0);
+ handle = XPCOM.nsEmbedString_new(aString);
+ }
+}
+
+public int /*long*/ getAddress() {
+ return handle;
+}
+
+public String toString() {
+ if (handle == 0) return null;
+ int length = XPCOM.nsEmbedString_Length(handle);
+ int /*long*/ buffer = XPCOM.nsEmbedString_get(handle);
+ char[] dest = new char[length];
+ XPCOM.memmove(dest, buffer, length * 2);
+ return new String(dest);
+}
+
+public void dispose() {
+ if (handle == 0) return;
+ XPCOM.nsEmbedString_delete(handle);
+ handle = 0;
+}
+} \ No newline at end of file
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIAppShell.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIAppShell.java
new file mode 100644
index 0000000000..9ce7481d72
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIAppShell.java
@@ -0,0 +1,75 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIAppShell extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 8;
+
+ public static final String NS_IAPPSHELL_IID_STR =
+ "a0757c31-eeac-11d1-9ec1-00aa002fb821";
+
+ public static final nsID NS_IAPPSHELL_IID =
+ new nsID(NS_IAPPSHELL_IID_STR);
+
+ public nsIAppShell(int /*long*/ address) {
+ super(address);
+ }
+
+ public int Create(int /*long*/ argc, int /*long*/[] argv) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), argc, argv);
+ }
+
+ public int Run() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress());
+ }
+
+ public int Spinup() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress());
+ }
+
+ public int Spindown() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress());
+ }
+
+ public int ListenToEventQueue(int /*long*/ aQueue, int aListen) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 5, getAddress(), aQueue, aListen);
+ }
+
+ public int GetNativeEvent(int /*long*/ aRealEvent, int /*long*/[] aEvent) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 6, getAddress(), aRealEvent, aEvent);
+ }
+
+ public int DispatchNativeEvent(int aRealEvent, int /*long*/ aEvent) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 7, getAddress(), aRealEvent, aEvent);
+ }
+
+ public int Exit() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 8, getAddress());
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIAuthInformation.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIAuthInformation.java
new file mode 100644
index 0000000000..204179092c
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIAuthInformation.java
@@ -0,0 +1,87 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIAuthInformation extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 9;
+
+ public static final String NS_IAUTHINFORMATION_IID_STR =
+ "0d73639c-2a92-4518-9f92-28f71fea5f20";
+
+ public static final nsID NS_IAUTHINFORMATION_IID =
+ new nsID(NS_IAUTHINFORMATION_IID_STR);
+
+ public nsIAuthInformation(int /*long*/ address) {
+ super(address);
+ }
+
+ public static final int AUTH_HOST = 1;
+
+ public static final int AUTH_PROXY = 2;
+
+ public static final int NEED_DOMAIN = 4;
+
+ public static final int ONLY_PASSWORD = 8;
+
+ public int GetFlags(int[] aFlags) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aFlags);
+ }
+
+ public int GetRealm(int /*long*/ aRealm) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), aRealm);
+ }
+
+ public int GetAuthenticationScheme(int /*long*/ aAuthenticationScheme) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), aAuthenticationScheme);
+ }
+
+ public int GetUsername(int /*long*/ aUsername) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), aUsername);
+ }
+
+ public int SetUsername(int /*long*/ aUsername) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 5, getAddress(), aUsername);
+ }
+
+ public int GetPassword(int /*long*/ aPassword) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 6, getAddress(), aPassword);
+ }
+
+ public int SetPassword(int /*long*/ aPassword) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 7, getAddress(), aPassword);
+ }
+
+ public int GetDomain(int /*long*/ aDomain) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 8, getAddress(), aDomain);
+ }
+
+ public int SetDomain(int /*long*/ aDomain) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 9, getAddress(), aDomain);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIBaseWindow.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIBaseWindow.java
new file mode 100644
index 0000000000..23c915b66d
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIBaseWindow.java
@@ -0,0 +1,139 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIBaseWindow extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 24;
+
+ public static final String NS_IBASEWINDOW_IID_STR =
+ "046bc8a0-8015-11d3-af70-00a024ffc08c";
+
+ public static final nsID NS_IBASEWINDOW_IID =
+ new nsID(NS_IBASEWINDOW_IID_STR);
+
+ public nsIBaseWindow(int /*long*/ address) {
+ super(address);
+ }
+
+ public int InitWindow(int /*long*/ parentNativeWindow, int /*long*/ parentWidget, int x, int y, int cx, int cy) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), parentNativeWindow, parentWidget, x, y, cx, cy);
+ }
+
+ public int Create() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress());
+ }
+
+ public int Destroy() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress());
+ }
+
+ public int SetPosition(int x, int y) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), x, y);
+ }
+
+ public int GetPosition(int[] x, int[] y) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 5, getAddress(), x, y);
+ }
+
+ public int SetSize(int cx, int cy, int fRepaint) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 6, getAddress(), cx, cy, fRepaint);
+ }
+
+ public int GetSize(int[] cx, int[] cy) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 7, getAddress(), cx, cy);
+ }
+
+ public int SetPositionAndSize(int x, int y, int cx, int cy, int fRepaint) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 8, getAddress(), x, y, cx, cy, fRepaint);
+ }
+
+ public int GetPositionAndSize(int[] x, int[] y, int[] cx, int[] cy) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 9, getAddress(), x, y, cx, cy);
+ }
+
+ public int Repaint(int force) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 10, getAddress(), force);
+ }
+
+ public int GetParentWidget(int /*long*/[] aParentWidget) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 11, getAddress(), aParentWidget);
+ }
+
+ public int SetParentWidget(int /*long*/ aParentWidget) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 12, getAddress(), aParentWidget);
+ }
+
+ public int GetParentNativeWindow(int /*long*/[] aParentNativeWindow) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 13, getAddress(), aParentNativeWindow);
+ }
+
+ public int SetParentNativeWindow(int /*long*/ aParentNativeWindow) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 14, getAddress(), aParentNativeWindow);
+ }
+
+ public int GetVisibility(int[] aVisibility) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 15, getAddress(), aVisibility);
+ }
+
+ public int SetVisibility(int aVisibility) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 16, getAddress(), aVisibility);
+ }
+
+ public int GetEnabled(int[] aEnabled) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 17, getAddress(), aEnabled);
+ }
+
+ public int SetEnabled(int aEnabled) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 18, getAddress(), aEnabled);
+ }
+
+ public int GetBlurSuppression(int[] aBlurSuppression) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 19, getAddress(), aBlurSuppression);
+ }
+
+ public int SetBlurSuppression(int aBlurSuppression) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 20, getAddress(), aBlurSuppression);
+ }
+
+ public int GetMainWidget(int /*long*/[] aMainWidget) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 21, getAddress(), aMainWidget);
+ }
+
+ public int SetFocus() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 22, getAddress());
+ }
+
+ public int GetTitle(int /*long*/[] aTitle) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 23, getAddress(), aTitle);
+ }
+
+ public int SetTitle(char[] aTitle) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 24, getAddress(), aTitle);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsICancelable.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsICancelable.java
new file mode 100644
index 0000000000..e20f203922
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsICancelable.java
@@ -0,0 +1,47 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsICancelable extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 1;
+
+ public static final String NS_ICANCELABLE_IID_STR =
+ "d94ac0a0-bb18-46b8-844e-84159064b0bd";
+
+ public static final nsID NS_ICANCELABLE_IID =
+ new nsID(NS_ICANCELABLE_IID_STR);
+
+ public nsICancelable(int /*long*/ address) {
+ super(address);
+ }
+
+ public int Cancel(int aReason) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aReason);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsICategoryManager.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsICategoryManager.java
new file mode 100644
index 0000000000..8417352efa
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsICategoryManager.java
@@ -0,0 +1,67 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsICategoryManager extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 6;
+
+ public static final String NS_ICATEGORYMANAGER_IID_STR =
+ "3275b2cd-af6d-429a-80d7-f0c5120342ac";
+
+ public static final nsID NS_ICATEGORYMANAGER_IID =
+ new nsID(NS_ICATEGORYMANAGER_IID_STR);
+
+ public nsICategoryManager(int /*long*/ address) {
+ super(address);
+ }
+
+ public int GetCategoryEntry(byte[] aCategory, byte[] aEntry, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aCategory, aEntry, _retval);
+ }
+
+ public int AddCategoryEntry(byte[] aCategory, byte[] aEntry, byte[] aValue, int aPersist, int aReplace, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), aCategory, aEntry, aValue, aPersist, aReplace, _retval);
+ }
+
+ public int DeleteCategoryEntry(byte[] aCategory, byte[] aEntry, int aPersist) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), aCategory, aEntry, aPersist);
+ }
+
+ public int DeleteCategory(byte[] aCategory) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), aCategory);
+ }
+
+ public int EnumerateCategory(byte[] aCategory, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 5, getAddress(), aCategory, _retval);
+ }
+
+ public int EnumerateCategories(int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 6, getAddress(), _retval);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIChannel.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIChannel.java
new file mode 100644
index 0000000000..5868a23a25
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIChannel.java
@@ -0,0 +1,119 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIChannel extends nsIRequest {
+
+ static final int LAST_METHOD_ID = nsIRequest.LAST_METHOD_ID + 16;
+
+ public static final String NS_ICHANNEL_IID_STR =
+ "c63a055a-a676-4e71-bf3c-6cfa11082018";
+
+ public static final nsID NS_ICHANNEL_IID =
+ new nsID(NS_ICHANNEL_IID_STR);
+
+ public nsIChannel(int /*long*/ address) {
+ super(address);
+ }
+
+ public int GetOriginalURI(int /*long*/[] aOriginalURI) {
+ return XPCOM.VtblCall(nsIRequest.LAST_METHOD_ID + 1, getAddress(), aOriginalURI);
+ }
+
+ public int SetOriginalURI(int /*long*/ aOriginalURI) {
+ return XPCOM.VtblCall(nsIRequest.LAST_METHOD_ID + 2, getAddress(), aOriginalURI);
+ }
+
+ public int GetURI(int /*long*/[] aURI) {
+ return XPCOM.VtblCall(nsIRequest.LAST_METHOD_ID + 3, getAddress(), aURI);
+ }
+
+ public int GetOwner(int /*long*/[] aOwner) {
+ return XPCOM.VtblCall(nsIRequest.LAST_METHOD_ID + 4, getAddress(), aOwner);
+ }
+
+ public int SetOwner(int /*long*/ aOwner) {
+ return XPCOM.VtblCall(nsIRequest.LAST_METHOD_ID + 5, getAddress(), aOwner);
+ }
+
+ public int GetNotificationCallbacks(int /*long*/[] aNotificationCallbacks) {
+ return XPCOM.VtblCall(nsIRequest.LAST_METHOD_ID + 6, getAddress(), aNotificationCallbacks);
+ }
+
+ public int SetNotificationCallbacks(int /*long*/ aNotificationCallbacks) {
+ return XPCOM.VtblCall(nsIRequest.LAST_METHOD_ID + 7, getAddress(), aNotificationCallbacks);
+ }
+
+ public int GetSecurityInfo(int /*long*/[] aSecurityInfo) {
+ return XPCOM.VtblCall(nsIRequest.LAST_METHOD_ID + 8, getAddress(), aSecurityInfo);
+ }
+
+ public int GetContentType(int /*long*/ aContentType) {
+ return XPCOM.VtblCall(nsIRequest.LAST_METHOD_ID + 9, getAddress(), aContentType);
+ }
+
+ public int SetContentType(int /*long*/ aContentType) {
+ return XPCOM.VtblCall(nsIRequest.LAST_METHOD_ID + 10, getAddress(), aContentType);
+ }
+
+ public int GetContentCharset(int /*long*/ aContentCharset) {
+ return XPCOM.VtblCall(nsIRequest.LAST_METHOD_ID + 11, getAddress(), aContentCharset);
+ }
+
+ public int SetContentCharset(int /*long*/ aContentCharset) {
+ return XPCOM.VtblCall(nsIRequest.LAST_METHOD_ID + 12, getAddress(), aContentCharset);
+ }
+
+ public int GetContentLength(int[] aContentLength) {
+ return XPCOM.VtblCall(nsIRequest.LAST_METHOD_ID + 13, getAddress(), aContentLength);
+ }
+
+ public int SetContentLength(int aContentLength) {
+ return XPCOM.VtblCall(nsIRequest.LAST_METHOD_ID + 14, getAddress(), aContentLength);
+ }
+
+ public int Open(int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsIRequest.LAST_METHOD_ID + 15, getAddress(), _retval);
+ }
+
+ public int AsyncOpen(int /*long*/ aListener, int /*long*/ aContext) {
+ return XPCOM.VtblCall(nsIRequest.LAST_METHOD_ID + 16, getAddress(), aListener, aContext);
+ }
+
+ public static final int LOAD_DOCUMENT_URI = 65536;
+
+ public static final int LOAD_RETARGETED_DOCUMENT_URI = 131072;
+
+ public static final int LOAD_REPLACE = 262144;
+
+ public static final int LOAD_INITIAL_DOCUMENT_URI = 524288;
+
+ public static final int LOAD_TARGETED = 1048576;
+
+ public static final int LOAD_CALL_CONTENT_SNIFFERS = 2097152;
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIClassInfo.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIClassInfo.java
new file mode 100644
index 0000000000..180f72101d
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIClassInfo.java
@@ -0,0 +1,91 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIClassInfo extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 8;
+
+ public static final String NS_ICLASSINFO_IID_STR =
+ "986c11d0-f340-11d4-9075-0010a4e73d9a";
+
+ public static final nsID NS_ICLASSINFO_IID =
+ new nsID(NS_ICLASSINFO_IID_STR);
+
+ public nsIClassInfo(int /*long*/ address) {
+ super(address);
+ }
+
+ public int GetInterfaces(int[] count, int /*long*/[] array) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), count, array);
+ }
+
+ public int GetHelperForLanguage(int language, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), language, _retval);
+ }
+
+ public int GetContractID(int /*long*/[] aContractID) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), aContractID);
+ }
+
+ public int GetClassDescription(int /*long*/[] aClassDescription) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), aClassDescription);
+ }
+
+ public int GetClassID(int /*long*/ aClassID) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 5, getAddress(), aClassID);
+ }
+
+ public int GetImplementationLanguage(int[] aImplementationLanguage) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 6, getAddress(), aImplementationLanguage);
+ }
+
+ public static final int SINGLETON = 1;
+
+ public static final int THREADSAFE = 2;
+
+ public static final int MAIN_THREAD_ONLY = 4;
+
+ public static final int DOM_OBJECT = 8;
+
+ public static final int PLUGIN_OBJECT = 16;
+
+ public static final int EAGER_CLASSINFO = 32;
+
+ public static final int CONTENT_NODE = 64;
+
+// public static final int RESERVED = 2147483648;
+
+ public int GetFlags(int[] aFlags) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 7, getAddress(), aFlags);
+ }
+
+ public int GetClassIDNoAlloc(int /*long*/ aClassIDNoAlloc) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 8, getAddress(), aClassIDNoAlloc);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIComponentManager.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIComponentManager.java
new file mode 100644
index 0000000000..0dd1e04636
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIComponentManager.java
@@ -0,0 +1,59 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2005 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIComponentManager extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 4;
+
+ public static final String NS_ICOMPONENTMANAGER_IID_STR =
+ "a88e5a60-205a-4bb1-94e1-2628daf51eae";
+
+ public static final nsID NS_ICOMPONENTMANAGER_IID =
+ new nsID(NS_ICOMPONENTMANAGER_IID_STR);
+
+ public nsIComponentManager(int /*long*/ address) {
+ super(address);
+ }
+
+ public int GetClassObject(nsID aClass, nsID aIID, int /*long*/[] result) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aClass, aIID, result);
+ }
+
+ public int GetClassObjectByContractID(byte[] aContractID, nsID aIID, int /*long*/[] result) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), aContractID, aIID, result);
+ }
+
+ public int CreateInstance(nsID aClass, int /*long*/ aDelegate, nsID aIID, int /*long*/[] result) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), aClass, aDelegate, aIID, result);
+ }
+
+ public int CreateInstanceByContractID(byte[] aContractID, int /*long*/ aDelegate, nsID aIID, int /*long*/[] result) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), aContractID, aDelegate, aIID, result);
+ }
+} \ No newline at end of file
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIComponentRegistrar.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIComponentRegistrar.java
new file mode 100644
index 0000000000..6ff0cfff91
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIComponentRegistrar.java
@@ -0,0 +1,91 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIComponentRegistrar extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 12;
+
+ public static final String NS_ICOMPONENTREGISTRAR_IID_STR =
+ "2417cbfe-65ad-48a6-b4b6-eb84db174392";
+
+ public static final nsID NS_ICOMPONENTREGISTRAR_IID =
+ new nsID(NS_ICOMPONENTREGISTRAR_IID_STR);
+
+ public nsIComponentRegistrar(int /*long*/ address) {
+ super(address);
+ }
+
+ public int AutoRegister(int /*long*/ aSpec) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aSpec);
+ }
+
+ public int AutoUnregister(int /*long*/ aSpec) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), aSpec);
+ }
+
+ public int RegisterFactory(nsID aClass, byte[] aClassName, byte[] aContractID, int /*long*/ aFactory) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), aClass, aClassName, aContractID, aFactory);
+ }
+
+ public int UnregisterFactory(nsID aClass, int /*long*/ aFactory) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), aClass, aFactory);
+ }
+
+ public int RegisterFactoryLocation(nsID aClass, byte[] aClassName, byte[] aContractID, int /*long*/ aFile, byte[] aLoaderStr, byte[] aType) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 5, getAddress(), aClass, aClassName, aContractID, aFile, aLoaderStr, aType);
+ }
+
+ public int UnregisterFactoryLocation(nsID aClass, int /*long*/ aFile) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 6, getAddress(), aClass, aFile);
+ }
+
+ public int IsCIDRegistered(nsID aClass, int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 7, getAddress(), aClass, _retval);
+ }
+
+ public int IsContractIDRegistered(byte[] aContractID, int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 8, getAddress(), aContractID, _retval);
+ }
+
+ public int EnumerateCIDs(int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 9, getAddress(), _retval);
+ }
+
+ public int EnumerateContractIDs(int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 10, getAddress(), _retval);
+ }
+
+ public int CIDToContractID(nsID aClass, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 11, getAddress(), aClass, _retval);
+ }
+
+ public int ContractIDToCID(byte[] aContractID, int /*long*/ _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 12, getAddress(), aContractID, _retval);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIContextMenuListener.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIContextMenuListener.java
new file mode 100644
index 0000000000..b29155e9a4
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIContextMenuListener.java
@@ -0,0 +1,59 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2005 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIContextMenuListener extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 1;
+
+ public static final String NS_ICONTEXTMENULISTENER_IID_STR =
+ "3478b6b0-3875-11d4-94ef-0020183bf181";
+
+ public static final nsID NS_ICONTEXTMENULISTENER_IID =
+ new nsID(NS_ICONTEXTMENULISTENER_IID_STR);
+
+ public nsIContextMenuListener(int /*long*/ address) {
+ super(address);
+ }
+
+ public static final int CONTEXT_NONE = 0;
+
+ public static final int CONTEXT_LINK = 1;
+
+ public static final int CONTEXT_IMAGE = 2;
+
+ public static final int CONTEXT_DOCUMENT = 4;
+
+ public static final int CONTEXT_TEXT = 8;
+
+ public static final int CONTEXT_INPUT = 16;
+
+ public int OnShowContextMenu(int aContextFlags, int /*long*/ aEvent, int /*long*/ aNode) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aContextFlags, aEvent, aNode);
+ }
+} \ No newline at end of file
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsICookie.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsICookie.java
new file mode 100644
index 0000000000..77eb6d2b10
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsICookie.java
@@ -0,0 +1,101 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsICookie extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 9;
+
+ public static final String NS_ICOOKIE_IID_STR =
+ "e9fcb9a4-d376-458f-b720-e65e7df593bc";
+
+ public static final nsID NS_ICOOKIE_IID =
+ new nsID(NS_ICOOKIE_IID_STR);
+
+ public nsICookie(int /*long*/ address) {
+ super(address);
+ }
+
+ public int GetName(int /*long*/ aName) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aName);
+ }
+
+ public int GetValue(int /*long*/ aValue) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), aValue);
+ }
+
+ public int GetIsDomain(int[] aIsDomain) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), aIsDomain);
+ }
+
+ public int GetHost(int /*long*/ aHost) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), aHost);
+ }
+
+ public int GetPath(int /*long*/ aPath) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 5, getAddress(), aPath);
+ }
+
+ public int GetIsSecure(int[] aIsSecure) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 6, getAddress(), aIsSecure);
+ }
+
+ public int GetExpires(long[] aExpires) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 7, getAddress(), aExpires);
+ }
+
+ public static final int STATUS_UNKNOWN = 0;
+
+ public static final int STATUS_ACCEPTED = 1;
+
+ public static final int STATUS_DOWNGRADED = 2;
+
+ public static final int STATUS_FLAGGED = 3;
+
+ public static final int STATUS_REJECTED = 4;
+
+ public int GetStatus(int /*long*/ aStatus) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 8, getAddress(), aStatus);
+ }
+
+ public static final int POLICY_UNKNOWN = 0;
+
+ public static final int POLICY_NONE = 1;
+
+ public static final int POLICY_NO_CONSENT = 2;
+
+ public static final int POLICY_IMPLICIT_CONSENT = 3;
+
+ public static final int POLICY_EXPLICIT_CONSENT = 4;
+
+ public static final int POLICY_NO_II = 5;
+
+ public int GetPolicy(int /*long*/ aPolicy) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 9, getAddress(), aPolicy);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsICookieManager.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsICookieManager.java
new file mode 100644
index 0000000000..a925dd8cc2
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsICookieManager.java
@@ -0,0 +1,55 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsICookieManager extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 3;
+
+ public static final String NS_ICOOKIEMANAGER_IID_STR =
+ "aaab6710-0f2c-11d5-a53b-0010a401eb10";
+
+ public static final nsID NS_ICOOKIEMANAGER_IID =
+ new nsID(NS_ICOOKIEMANAGER_IID_STR);
+
+ public nsICookieManager(int /*long*/ address) {
+ super(address);
+ }
+
+ public int RemoveAll() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress());
+ }
+
+ public int GetEnumerator(int /*long*/[] aEnumerator) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), aEnumerator);
+ }
+
+ public int Remove(int /*long*/ aDomain, int /*long*/ aName, int /*long*/ aPath, int aBlocked) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), aDomain, aName, aPath, aBlocked);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsICookieService.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsICookieService.java
new file mode 100644
index 0000000000..7c9e80d383
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsICookieService.java
@@ -0,0 +1,64 @@
+package org.eclipse.swt.internal.mozilla;
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+
+public class nsICookieService extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 5;
+
+ public static final String NS_ICOOKIESERVICE_IID_STR =
+ "011c3190-1434-11d6-a618-0010a401eb10";
+
+ public static final nsID NS_ICOOKIESERVICE_IID =
+ new nsID(NS_ICOOKIESERVICE_IID_STR);
+
+ public nsICookieService(int /*long*/ address) {
+ super(address);
+ }
+
+ public int GetCookieString(int /*long*/ aURI, int /*long*/ aChannel, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aURI, aChannel, _retval);
+ }
+
+ public int GetCookieStringFromHttp(int /*long*/ aURI, int /*long*/ aFirstURI, int /*long*/ aChannel, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), aURI, aFirstURI, aChannel, _retval);
+ }
+
+ public int SetCookieString(int /*long*/ aURI, int /*long*/ aPrompt, byte[] aCookie, int /*long*/ aChannel) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), aURI, aPrompt, aCookie, aChannel);
+ }
+
+ public int SetCookieStringFromHttp(int /*long*/ aURI, int /*long*/ aFirstURI, int /*long*/ aPrompt, byte[] aCookie, byte[] aServerTime, int /*long*/ aChannel) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), aURI, aFirstURI, aPrompt, aCookie, aServerTime, aChannel);
+ }
+
+ public int GetCookieIconIsVisible(int[] aCookieIconIsVisible) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 5, getAddress(), aCookieIconIsVisible);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsICookieService_1_9.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsICookieService_1_9.java
new file mode 100644
index 0000000000..429bba25f8
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsICookieService_1_9.java
@@ -0,0 +1,59 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsICookieService_1_9 extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 4;
+
+ public static final String NS_ICOOKIESERVICE_IID_STR =
+ "2aaa897a-293c-4d2b-a657-8c9b7136996d";
+
+ public static final nsID NS_ICOOKIESERVICE_IID =
+ new nsID(NS_ICOOKIESERVICE_IID_STR);
+
+ public nsICookieService_1_9(int /*long*/ address) {
+ super(address);
+ }
+
+ public int GetCookieString(int /*long*/ aURI, int /*long*/ aChannel, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aURI, aChannel, _retval);
+ }
+
+ public int GetCookieStringFromHttp(int /*long*/ aURI, int /*long*/ aFirstURI, int /*long*/ aChannel, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), aURI, aFirstURI, aChannel, _retval);
+ }
+
+ public int SetCookieString(int /*long*/ aURI, int /*long*/ aPrompt, byte[] aCookie, int /*long*/ aChannel) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), aURI, aPrompt, aCookie, aChannel);
+ }
+
+ public int SetCookieStringFromHttp(int /*long*/ aURI, int /*long*/ aFirstURI, int /*long*/ aPrompt, byte[] aCookie, byte[] aServerTime, int /*long*/ aChannel) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), aURI, aFirstURI, aPrompt, aCookie, aServerTime, aChannel);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsID.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsID.java
new file mode 100644
index 0000000000..a5fd6d8c63
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsID.java
@@ -0,0 +1,77 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2004 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+/** @jniclass flags=cpp */
+public class nsID {
+
+ public int m0;
+ public short m1;
+ public short m2;
+ public byte[] m3 = new byte[8];
+ public static final int sizeof = 16;
+
+public nsID() {
+}
+
+public nsID(String id) {
+ Parse(id);
+}
+
+public boolean Equals(nsID other) {
+ int /*long*/ ptr = XPCOM.nsID_new ();
+ XPCOM.memmove (ptr, this, nsID.sizeof);
+ int /*long*/ otherPtr = XPCOM.nsID_new ();
+ XPCOM.memmove (otherPtr, other, nsID.sizeof);
+ boolean result = XPCOM.nsID_Equals (ptr, otherPtr) != 0;
+ XPCOM.nsID_delete (ptr);
+ XPCOM.nsID_delete (otherPtr);
+ return result;
+}
+
+public void Parse (String aIDStr) {
+ if (aIDStr == null) throw new Error ();
+ int i = 0;
+ for (; i < 8; i++) m0 = (m0 << 4) + Integer.parseInt (aIDStr.substring (i, i + 1), 16);
+ if (aIDStr.charAt (i++) != '-') throw new Error ();
+ for (; i < 13; i++) m1 = (short)((m1 << 4) + Integer.parseInt (aIDStr.substring (i, i + 1), 16));
+ if (aIDStr.charAt (i++) != '-') throw new Error ();
+ for (; i < 18; i++) m2 = (short)((m2 << 4) + Integer.parseInt (aIDStr.substring (i, i + 1), 16));
+ if (aIDStr.charAt (i++) != '-') throw new Error ();
+ for (; i < 21; i++) m3[0] = (byte)((m3[0] << 4) + Integer.parseInt (aIDStr.substring (i, i + 1), 16));
+ for (; i < 23; i++) m3[1] = (byte)((m3[1] << 4) + Integer.parseInt (aIDStr.substring (i, i + 1), 16));
+ if (aIDStr.charAt (i++) != '-') throw new Error ();
+ for (; i < 26; i++) m3[2] = (byte)((m3[2] << 4) + Integer.parseInt (aIDStr.substring (i, i + 1), 16));
+ for (; i < 28; i++) m3[3] = (byte)((m3[3] << 4) + Integer.parseInt (aIDStr.substring (i, i + 1), 16));
+ for (; i < 30; i++) m3[4] = (byte)((m3[4] << 4) + Integer.parseInt (aIDStr.substring (i, i + 1), 16));
+ for (; i < 32; i++) m3[5] = (byte)((m3[5] << 4) + Integer.parseInt (aIDStr.substring (i, i + 1), 16));
+ for (; i < 34; i++) m3[6] = (byte)((m3[6] << 4) + Integer.parseInt (aIDStr.substring (i, i + 1), 16));
+ for (; i < 36; i++) m3[7] = (byte)((m3[7] << 4) + Integer.parseInt (aIDStr.substring (i, i + 1), 16));
+}
+
+} \ No newline at end of file
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMEvent.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMEvent.java
new file mode 100644
index 0000000000..b07be67dc4
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMEvent.java
@@ -0,0 +1,89 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIDOMEvent extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 10;
+
+ public static final String NS_IDOMEVENT_IID_STR =
+ "a66b7b80-ff46-bd97-0080-5f8ae38add32";
+
+ public static final nsID NS_IDOMEVENT_IID =
+ new nsID(NS_IDOMEVENT_IID_STR);
+
+ public nsIDOMEvent(int /*long*/ address) {
+ super(address);
+ }
+
+ public static final int CAPTURING_PHASE = 1;
+
+ public static final int AT_TARGET = 2;
+
+ public static final int BUBBLING_PHASE = 3;
+
+ public int GetType(int /*long*/ aType) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aType);
+ }
+
+ public int GetTarget(int /*long*/[] aTarget) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), aTarget);
+ }
+
+ public int GetCurrentTarget(int /*long*/[] aCurrentTarget) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), aCurrentTarget);
+ }
+
+ public int GetEventPhase(short[] aEventPhase) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), aEventPhase);
+ }
+
+ public int GetBubbles(int[] aBubbles) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 5, getAddress(), aBubbles);
+ }
+
+ public int GetCancelable(int[] aCancelable) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 6, getAddress(), aCancelable);
+ }
+
+ public int GetTimeStamp(int /*long*/[] aTimeStamp) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 7, getAddress(), aTimeStamp);
+ }
+
+ public int StopPropagation() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 8, getAddress());
+ }
+
+ public int PreventDefault() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 9, getAddress());
+ }
+
+ public int InitEvent(int /*long*/ eventTypeArg, int canBubbleArg, int cancelableArg) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 10, getAddress(), eventTypeArg, canBubbleArg, cancelableArg);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMEventTarget.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMEventTarget.java
new file mode 100644
index 0000000000..fd08c33bf4
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMEventTarget.java
@@ -0,0 +1,55 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIDOMEventTarget extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 3;
+
+ public static final String NS_IDOMEVENTTARGET_IID_STR =
+ "1c773b30-d1cf-11d2-bd95-00805f8ae3f4";
+
+ public static final nsID NS_IDOMEVENTTARGET_IID =
+ new nsID(NS_IDOMEVENTTARGET_IID_STR);
+
+ public nsIDOMEventTarget(int /*long*/ address) {
+ super(address);
+ }
+
+ public int AddEventListener(int /*long*/ type, int /*long*/ listener, int useCapture) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), type, listener, useCapture);
+ }
+
+ public int RemoveEventListener(int /*long*/ type, int /*long*/ listener, int useCapture) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), type, listener, useCapture);
+ }
+
+ public int DispatchEvent(int /*long*/ evt, int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), evt, _retval);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMKeyEvent.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMKeyEvent.java
new file mode 100644
index 0000000000..906c132f87
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMKeyEvent.java
@@ -0,0 +1,299 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIDOMKeyEvent extends nsIDOMUIEvent {
+
+ static final int LAST_METHOD_ID = nsIDOMUIEvent.LAST_METHOD_ID + 7;
+
+ public static final String NS_IDOMKEYEVENT_IID_STR =
+ "028e0e6e-8b01-11d3-aae7-0010838a3123";
+
+ public static final nsID NS_IDOMKEYEVENT_IID =
+ new nsID(NS_IDOMKEYEVENT_IID_STR);
+
+ public nsIDOMKeyEvent(int /*long*/ address) {
+ super(address);
+ }
+
+ public static final int DOM_VK_CANCEL = 3;
+
+ public static final int DOM_VK_HELP = 6;
+
+ public static final int DOM_VK_BACK_SPACE = 8;
+
+ public static final int DOM_VK_TAB = 9;
+
+ public static final int DOM_VK_CLEAR = 12;
+
+ public static final int DOM_VK_RETURN = 13;
+
+ public static final int DOM_VK_ENTER = 14;
+
+ public static final int DOM_VK_SHIFT = 16;
+
+ public static final int DOM_VK_CONTROL = 17;
+
+ public static final int DOM_VK_ALT = 18;
+
+ public static final int DOM_VK_PAUSE = 19;
+
+ public static final int DOM_VK_CAPS_LOCK = 20;
+
+ public static final int DOM_VK_ESCAPE = 27;
+
+ public static final int DOM_VK_SPACE = 32;
+
+ public static final int DOM_VK_PAGE_UP = 33;
+
+ public static final int DOM_VK_PAGE_DOWN = 34;
+
+ public static final int DOM_VK_END = 35;
+
+ public static final int DOM_VK_HOME = 36;
+
+ public static final int DOM_VK_LEFT = 37;
+
+ public static final int DOM_VK_UP = 38;
+
+ public static final int DOM_VK_RIGHT = 39;
+
+ public static final int DOM_VK_DOWN = 40;
+
+ public static final int DOM_VK_PRINTSCREEN = 44;
+
+ public static final int DOM_VK_INSERT = 45;
+
+ public static final int DOM_VK_DELETE = 46;
+
+ public static final int DOM_VK_0 = 48;
+
+ public static final int DOM_VK_1 = 49;
+
+ public static final int DOM_VK_2 = 50;
+
+ public static final int DOM_VK_3 = 51;
+
+ public static final int DOM_VK_4 = 52;
+
+ public static final int DOM_VK_5 = 53;
+
+ public static final int DOM_VK_6 = 54;
+
+ public static final int DOM_VK_7 = 55;
+
+ public static final int DOM_VK_8 = 56;
+
+ public static final int DOM_VK_9 = 57;
+
+ public static final int DOM_VK_SEMICOLON = 59;
+
+ public static final int DOM_VK_EQUALS = 61;
+
+ public static final int DOM_VK_A = 65;
+
+ public static final int DOM_VK_B = 66;
+
+ public static final int DOM_VK_C = 67;
+
+ public static final int DOM_VK_D = 68;
+
+ public static final int DOM_VK_E = 69;
+
+ public static final int DOM_VK_F = 70;
+
+ public static final int DOM_VK_G = 71;
+
+ public static final int DOM_VK_H = 72;
+
+ public static final int DOM_VK_I = 73;
+
+ public static final int DOM_VK_J = 74;
+
+ public static final int DOM_VK_K = 75;
+
+ public static final int DOM_VK_L = 76;
+
+ public static final int DOM_VK_M = 77;
+
+ public static final int DOM_VK_N = 78;
+
+ public static final int DOM_VK_O = 79;
+
+ public static final int DOM_VK_P = 80;
+
+ public static final int DOM_VK_Q = 81;
+
+ public static final int DOM_VK_R = 82;
+
+ public static final int DOM_VK_S = 83;
+
+ public static final int DOM_VK_T = 84;
+
+ public static final int DOM_VK_U = 85;
+
+ public static final int DOM_VK_V = 86;
+
+ public static final int DOM_VK_W = 87;
+
+ public static final int DOM_VK_X = 88;
+
+ public static final int DOM_VK_Y = 89;
+
+ public static final int DOM_VK_Z = 90;
+
+ public static final int DOM_VK_NUMPAD0 = 96;
+
+ public static final int DOM_VK_NUMPAD1 = 97;
+
+ public static final int DOM_VK_NUMPAD2 = 98;
+
+ public static final int DOM_VK_NUMPAD3 = 99;
+
+ public static final int DOM_VK_NUMPAD4 = 100;
+
+ public static final int DOM_VK_NUMPAD5 = 101;
+
+ public static final int DOM_VK_NUMPAD6 = 102;
+
+ public static final int DOM_VK_NUMPAD7 = 103;
+
+ public static final int DOM_VK_NUMPAD8 = 104;
+
+ public static final int DOM_VK_NUMPAD9 = 105;
+
+ public static final int DOM_VK_MULTIPLY = 106;
+
+ public static final int DOM_VK_ADD = 107;
+
+ public static final int DOM_VK_SEPARATOR = 108;
+
+ public static final int DOM_VK_SUBTRACT = 109;
+
+ public static final int DOM_VK_DECIMAL = 110;
+
+ public static final int DOM_VK_DIVIDE = 111;
+
+ public static final int DOM_VK_F1 = 112;
+
+ public static final int DOM_VK_F2 = 113;
+
+ public static final int DOM_VK_F3 = 114;
+
+ public static final int DOM_VK_F4 = 115;
+
+ public static final int DOM_VK_F5 = 116;
+
+ public static final int DOM_VK_F6 = 117;
+
+ public static final int DOM_VK_F7 = 118;
+
+ public static final int DOM_VK_F8 = 119;
+
+ public static final int DOM_VK_F9 = 120;
+
+ public static final int DOM_VK_F10 = 121;
+
+ public static final int DOM_VK_F11 = 122;
+
+ public static final int DOM_VK_F12 = 123;
+
+ public static final int DOM_VK_F13 = 124;
+
+ public static final int DOM_VK_F14 = 125;
+
+ public static final int DOM_VK_F15 = 126;
+
+ public static final int DOM_VK_F16 = 127;
+
+ public static final int DOM_VK_F17 = 128;
+
+ public static final int DOM_VK_F18 = 129;
+
+ public static final int DOM_VK_F19 = 130;
+
+ public static final int DOM_VK_F20 = 131;
+
+ public static final int DOM_VK_F21 = 132;
+
+ public static final int DOM_VK_F22 = 133;
+
+ public static final int DOM_VK_F23 = 134;
+
+ public static final int DOM_VK_F24 = 135;
+
+ public static final int DOM_VK_NUM_LOCK = 144;
+
+ public static final int DOM_VK_SCROLL_LOCK = 145;
+
+ public static final int DOM_VK_COMMA = 188;
+
+ public static final int DOM_VK_PERIOD = 190;
+
+ public static final int DOM_VK_SLASH = 191;
+
+ public static final int DOM_VK_BACK_QUOTE = 192;
+
+ public static final int DOM_VK_OPEN_BRACKET = 219;
+
+ public static final int DOM_VK_BACK_SLASH = 220;
+
+ public static final int DOM_VK_CLOSE_BRACKET = 221;
+
+ public static final int DOM_VK_QUOTE = 222;
+
+ public static final int DOM_VK_META = 224;
+
+ public int GetCharCode(int[] aCharCode) {
+ return XPCOM.VtblCall(nsIDOMUIEvent.LAST_METHOD_ID + 1, getAddress(), aCharCode);
+ }
+
+ public int GetKeyCode(int[] aKeyCode) {
+ return XPCOM.VtblCall(nsIDOMUIEvent.LAST_METHOD_ID + 2, getAddress(), aKeyCode);
+ }
+
+ public int GetAltKey(int[] aAltKey) {
+ return XPCOM.VtblCall(nsIDOMUIEvent.LAST_METHOD_ID + 3, getAddress(), aAltKey);
+ }
+
+ public int GetCtrlKey(int[] aCtrlKey) {
+ return XPCOM.VtblCall(nsIDOMUIEvent.LAST_METHOD_ID + 4, getAddress(), aCtrlKey);
+ }
+
+ public int GetShiftKey(int[] aShiftKey) {
+ return XPCOM.VtblCall(nsIDOMUIEvent.LAST_METHOD_ID + 5, getAddress(), aShiftKey);
+ }
+
+ public int GetMetaKey(int[] aMetaKey) {
+ return XPCOM.VtblCall(nsIDOMUIEvent.LAST_METHOD_ID + 6, getAddress(), aMetaKey);
+ }
+
+ public int InitKeyEvent(int /*long*/ typeArg, int canBubbleArg, int cancelableArg, int /*long*/ viewArg, int ctrlKeyArg, int altKeyArg, int shiftKeyArg, int metaKeyArg, int keyCodeArg, int charCodeArg) {
+ return XPCOM.VtblCall(nsIDOMUIEvent.LAST_METHOD_ID + 7, getAddress(), typeArg, canBubbleArg, cancelableArg, viewArg, ctrlKeyArg, altKeyArg, shiftKeyArg, metaKeyArg, keyCodeArg, charCodeArg);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMMouseEvent.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMMouseEvent.java
new file mode 100644
index 0000000000..71b7a7347e
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMMouseEvent.java
@@ -0,0 +1,87 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIDOMMouseEvent extends nsIDOMUIEvent {
+
+ static final int LAST_METHOD_ID = nsIDOMUIEvent.LAST_METHOD_ID + 11;
+
+ public static final String NS_IDOMMOUSEEVENT_IID_STR =
+ "ff751edc-8b02-aae7-0010-8301838a3123";
+
+ public static final nsID NS_IDOMMOUSEEVENT_IID =
+ new nsID(NS_IDOMMOUSEEVENT_IID_STR);
+
+ public nsIDOMMouseEvent(int /*long*/ address) {
+ super(address);
+ }
+
+ public int GetScreenX(int[] aScreenX) {
+ return XPCOM.VtblCall(nsIDOMUIEvent.LAST_METHOD_ID + 1, getAddress(), aScreenX);
+ }
+
+ public int GetScreenY(int[] aScreenY) {
+ return XPCOM.VtblCall(nsIDOMUIEvent.LAST_METHOD_ID + 2, getAddress(), aScreenY);
+ }
+
+ public int GetClientX(int[] aClientX) {
+ return XPCOM.VtblCall(nsIDOMUIEvent.LAST_METHOD_ID + 3, getAddress(), aClientX);
+ }
+
+ public int GetClientY(int[] aClientY) {
+ return XPCOM.VtblCall(nsIDOMUIEvent.LAST_METHOD_ID + 4, getAddress(), aClientY);
+ }
+
+ public int GetCtrlKey(int[] aCtrlKey) {
+ return XPCOM.VtblCall(nsIDOMUIEvent.LAST_METHOD_ID + 5, getAddress(), aCtrlKey);
+ }
+
+ public int GetShiftKey(int[] aShiftKey) {
+ return XPCOM.VtblCall(nsIDOMUIEvent.LAST_METHOD_ID + 6, getAddress(), aShiftKey);
+ }
+
+ public int GetAltKey(int[] aAltKey) {
+ return XPCOM.VtblCall(nsIDOMUIEvent.LAST_METHOD_ID + 7, getAddress(), aAltKey);
+ }
+
+ public int GetMetaKey(int[] aMetaKey) {
+ return XPCOM.VtblCall(nsIDOMUIEvent.LAST_METHOD_ID + 8, getAddress(), aMetaKey);
+ }
+
+ public int GetButton(short[] aButton) {
+ return XPCOM.VtblCall(nsIDOMUIEvent.LAST_METHOD_ID + 9, getAddress(), aButton);
+ }
+
+ public int GetRelatedTarget(int /*long*/[] aRelatedTarget) {
+ return XPCOM.VtblCall(nsIDOMUIEvent.LAST_METHOD_ID + 10, getAddress(), aRelatedTarget);
+ }
+
+ public int InitMouseEvent(int /*long*/ typeArg, int canBubbleArg, int cancelableArg, int /*long*/ viewArg, int detailArg, int screenXArg, int screenYArg, int clientXArg, int clientYArg, int ctrlKeyArg, int altKeyArg, int shiftKeyArg, int metaKeyArg, short buttonArg, int /*long*/ relatedTargetArg) {
+ return XPCOM.VtblCall(nsIDOMUIEvent.LAST_METHOD_ID + 11, getAddress(), typeArg, canBubbleArg, cancelableArg, viewArg, detailArg, screenXArg, screenYArg, clientXArg, clientYArg, ctrlKeyArg, altKeyArg, shiftKeyArg, metaKeyArg, buttonArg, relatedTargetArg);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMSerializer.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMSerializer.java
new file mode 100644
index 0000000000..a44ec1ff2b
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMSerializer.java
@@ -0,0 +1,51 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIDOMSerializer extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 2;
+
+ public static final String NS_IDOMSERIALIZER_IID_STR =
+ "a6cf9123-15b3-11d2-932e-00805f8add32";
+
+ public static final nsID NS_IDOMSERIALIZER_IID =
+ new nsID(NS_IDOMSERIALIZER_IID_STR);
+
+ public nsIDOMSerializer(int /*long*/ address) {
+ super(address);
+ }
+
+ public int SerializeToString(int /*long*/ root, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), root, _retval);
+ }
+
+ public int SerializeToStream(int /*long*/ root, int /*long*/ stream, byte[] charset) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), root, stream, charset);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMSerializer_1_7.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMSerializer_1_7.java
new file mode 100644
index 0000000000..3a8ec8bb6c
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMSerializer_1_7.java
@@ -0,0 +1,51 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIDOMSerializer_1_7 extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 2;
+
+ public static final String NS_IDOMSERIALIZER_IID_STR =
+ "9fd4ba15-e67c-4c98-b52c-7715f62c9196";
+
+ public static final nsID NS_IDOMSERIALIZER_IID =
+ new nsID(NS_IDOMSERIALIZER_IID_STR);
+
+ public nsIDOMSerializer_1_7(int /*long*/ address) {
+ super(address);
+ }
+
+ public int SerializeToString(int /*long*/ root, int /*long*/ _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), root, _retval);
+ }
+
+ public int SerializeToStream(int /*long*/ root, int /*long*/ stream, int /*long*/ charset) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), root, stream, charset);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMUIEvent.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMUIEvent.java
new file mode 100644
index 0000000000..3a35f4b4da
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMUIEvent.java
@@ -0,0 +1,55 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIDOMUIEvent extends nsIDOMEvent {
+
+ static final int LAST_METHOD_ID = nsIDOMEvent.LAST_METHOD_ID + 3;
+
+ public static final String NS_IDOMUIEVENT_IID_STR =
+ "a6cf90c3-15b3-11d2-932e-00805f8add32";
+
+ public static final nsID NS_IDOMUIEVENT_IID =
+ new nsID(NS_IDOMUIEVENT_IID_STR);
+
+ public nsIDOMUIEvent(int /*long*/ address) {
+ super(address);
+ }
+
+ public int GetView(int /*long*/[] aView) {
+ return XPCOM.VtblCall(nsIDOMEvent.LAST_METHOD_ID + 1, getAddress(), aView);
+ }
+
+ public int GetDetail(int[] aDetail) {
+ return XPCOM.VtblCall(nsIDOMEvent.LAST_METHOD_ID + 2, getAddress(), aDetail);
+ }
+
+ public int InitUIEvent(int /*long*/ typeArg, int canBubbleArg, int cancelableArg, int /*long*/ viewArg, int detailArg) {
+ return XPCOM.VtblCall(nsIDOMEvent.LAST_METHOD_ID + 3, getAddress(), typeArg, canBubbleArg, cancelableArg, viewArg, detailArg);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMWindow.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMWindow.java
new file mode 100644
index 0000000000..514843aaae
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMWindow.java
@@ -0,0 +1,111 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2005 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIDOMWindow extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 17;
+
+ public static final String NS_IDOMWINDOW_IID_STR =
+ "a6cf906b-15b3-11d2-932e-00805f8add32";
+
+ public static final nsID NS_IDOMWINDOW_IID =
+ new nsID(NS_IDOMWINDOW_IID_STR);
+
+ public nsIDOMWindow(int /*long*/ address) {
+ super(address);
+ }
+
+ public int GetDocument(int /*long*/[] aDocument) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aDocument);
+ }
+
+ public int GetParent(int /*long*/[] aParent) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), aParent);
+ }
+
+ public int GetTop(int /*long*/[] aTop) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), aTop);
+ }
+
+ public int GetScrollbars(int /*long*/[] aScrollbars) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), aScrollbars);
+ }
+
+ public int GetFrames(int /*long*/[] aFrames) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 5, getAddress(), aFrames);
+ }
+
+ public int GetName(int /*long*/ aName) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 6, getAddress(), aName);
+ }
+
+ public int SetName(int /*long*/ aName) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 7, getAddress(), aName);
+ }
+
+ public int GetTextZoom(float[] aTextZoom) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 8, getAddress(), aTextZoom);
+ }
+
+ public int SetTextZoom(float aTextZoom) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 9, getAddress(), aTextZoom);
+ }
+
+ public int GetScrollX(int[] aScrollX) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 10, getAddress(), aScrollX);
+ }
+
+ public int GetScrollY(int[] aScrollY) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 11, getAddress(), aScrollY);
+ }
+
+ public int ScrollTo(int xScroll, int yScroll) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 12, getAddress(), xScroll, yScroll);
+ }
+
+ public int ScrollBy(int xScrollDif, int yScrollDif) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 13, getAddress(), xScrollDif, yScrollDif);
+ }
+
+ public int GetSelection(int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 14, getAddress(), _retval);
+ }
+
+ public int ScrollByLines(int numLines) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 15, getAddress(), numLines);
+ }
+
+ public int ScrollByPages(int numPages) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 16, getAddress(), numPages);
+ }
+
+ public int SizeToContent() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 17, getAddress());
+ }
+} \ No newline at end of file
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMWindowCollection.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMWindowCollection.java
new file mode 100644
index 0000000000..663688ad78
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDOMWindowCollection.java
@@ -0,0 +1,55 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIDOMWindowCollection extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 3;
+
+ public static final String NS_IDOMWINDOWCOLLECTION_IID_STR =
+ "a6cf906f-15b3-11d2-932e-00805f8add32";
+
+ public static final nsID NS_IDOMWINDOWCOLLECTION_IID =
+ new nsID(NS_IDOMWINDOWCOLLECTION_IID_STR);
+
+ public nsIDOMWindowCollection(int /*long*/ address) {
+ super(address);
+ }
+
+ public int GetLength(int[] aLength) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aLength);
+ }
+
+ public int Item(int index, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), index, _retval);
+ }
+
+ public int NamedItem(int /*long*/ name, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), name, _retval);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDataType.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDataType.java
new file mode 100644
index 0000000000..88e6093ef5
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDataType.java
@@ -0,0 +1,73 @@
+package org.eclipse.swt.internal.mozilla;
+
+
+public class nsIDataType extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 0;
+
+ public static final String NS_IDATATYPE_IID_STR =
+ "4d12e540-83d7-11d5-90ed-0010a4e73d9a";
+
+ public static final nsID NS_IDATATYPE_IID =
+ new nsID(NS_IDATATYPE_IID_STR);
+
+ public nsIDataType(int /*long*/ address) {
+ super(address);
+ }
+
+ public static final short VTYPE_INT8 = 0;
+
+ public static final short VTYPE_INT16 = 1;
+
+ public static final short VTYPE_INT32 = 2;
+
+ public static final short VTYPE_INT64 = 3;
+
+ public static final short VTYPE_UINT8 = 4;
+
+ public static final short VTYPE_UINT16 = 5;
+
+ public static final short VTYPE_UINT32 = 6;
+
+ public static final short VTYPE_UINT64 = 7;
+
+ public static final short VTYPE_FLOAT = 8;
+
+ public static final short VTYPE_DOUBLE = 9;
+
+ public static final short VTYPE_BOOL = 10;
+
+ public static final short VTYPE_CHAR = 11;
+
+ public static final short VTYPE_WCHAR = 12;
+
+ public static final short VTYPE_VOID = 13;
+
+ public static final short VTYPE_ID = 14;
+
+ public static final short VTYPE_DOMSTRING = 15;
+
+ public static final short VTYPE_CHAR_STR = 16;
+
+ public static final short VTYPE_WCHAR_STR = 17;
+
+ public static final short VTYPE_INTERFACE = 18;
+
+ public static final short VTYPE_INTERFACE_IS = 19;
+
+ public static final short VTYPE_ARRAY = 20;
+
+ public static final short VTYPE_STRING_SIZE_IS = 21;
+
+ public static final short VTYPE_WSTRING_SIZE_IS = 22;
+
+ public static final short VTYPE_UTF8STRING = 23;
+
+ public static final short VTYPE_CSTRING = 24;
+
+ public static final short VTYPE_ASTRING = 25;
+
+ public static final short VTYPE_EMPTY_ARRAY = 254;
+
+ public static final short VTYPE_EMPTY = 255;
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDirectoryService.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDirectoryService.java
new file mode 100644
index 0000000000..58aef5f984
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDirectoryService.java
@@ -0,0 +1,55 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIDirectoryService extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 3;
+
+ public static final String NS_IDIRECTORYSERVICE_IID_STR =
+ "57a66a60-d43a-11d3-8cc2-00609792278c";
+
+ public static final nsID NS_IDIRECTORYSERVICE_IID =
+ new nsID(NS_IDIRECTORYSERVICE_IID_STR);
+
+ public nsIDirectoryService(int /*long*/ address) {
+ super(address);
+ }
+
+ public int Init() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress());
+ }
+
+ public int RegisterProvider(int /*long*/ prov) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), prov);
+ }
+
+ public int UnregisterProvider(int /*long*/ prov) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), prov);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDirectoryServiceProvider.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDirectoryServiceProvider.java
new file mode 100644
index 0000000000..8998396675
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDirectoryServiceProvider.java
@@ -0,0 +1,47 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIDirectoryServiceProvider extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 1;
+
+ public static final String NS_IDIRECTORYSERVICEPROVIDER_IID_STR =
+ "bbf8cab0-d43a-11d3-8cc2-00609792278c";
+
+ public static final nsID NS_IDIRECTORYSERVICEPROVIDER_IID =
+ new nsID(NS_IDIRECTORYSERVICEPROVIDER_IID_STR);
+
+ public nsIDirectoryServiceProvider(int /*long*/ address) {
+ super(address);
+ }
+
+ public int GetFile(byte[] prop, int[] persistent, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), prop, persistent, _retval);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDirectoryServiceProvider2.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDirectoryServiceProvider2.java
new file mode 100644
index 0000000000..a277b15875
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDirectoryServiceProvider2.java
@@ -0,0 +1,47 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIDirectoryServiceProvider2 extends nsIDirectoryServiceProvider {
+
+ static final int LAST_METHOD_ID = nsIDirectoryServiceProvider.LAST_METHOD_ID + 1;
+
+ public static final String NS_IDIRECTORYSERVICEPROVIDER2_IID_STRING =
+ "2f977d4b-5485-11d4-87e2-0010a4e75ef2";
+
+ public static final nsID NS_IDIRECTORYSERVICEPROVIDER2_IID =
+ new nsID(NS_IDIRECTORYSERVICEPROVIDER2_IID_STRING);
+
+ public nsIDirectoryServiceProvider2(int /*long*/ address) {
+ super(address);
+ }
+
+ public int GetFiles(byte[] prop, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsIDirectoryServiceProvider.LAST_METHOD_ID + 1, getAddress(), prop, _retval);
+ }
+} \ No newline at end of file
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDocShell.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDocShell.java
new file mode 100644
index 0000000000..bed487cdc4
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDocShell.java
@@ -0,0 +1,269 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIDocShell extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 51;
+
+ public static final String NS_IDOCSHELL_IID_STR =
+ "69e5de00-7b8b-11d3-af61-00a024ffc08c";
+
+ public static final nsID NS_IDOCSHELL_IID =
+ new nsID(NS_IDOCSHELL_IID_STR);
+
+ public nsIDocShell(int /*long*/ address) {
+ super(address);
+ }
+
+ public int LoadURI(int /*long*/ uri, int /*long*/ loadInfo, int aLoadFlags, int firstParty) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), uri, loadInfo, aLoadFlags, firstParty);
+ }
+
+ public int LoadStream(int /*long*/ aStream, int /*long*/ aURI, int /*long*/ aContentType, int /*long*/ aContentCharset, int /*long*/ aLoadInfo) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), aStream, aURI, aContentType, aContentCharset, aLoadInfo);
+ }
+
+ public int InternalLoad(int /*long*/ aURI, int /*long*/ aReferrer, int /*long*/ aOwner, int aInheritOwner, char[] aWindowTarget, int /*long*/ aPostDataStream, int /*long*/ aHeadersStream, int aLoadFlags, int /*long*/ aSHEntry, int firstParty, int /*long*/[] aDocShell, int /*long*/[] aRequest) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), aURI, aReferrer, aOwner, aInheritOwner, aWindowTarget, aPostDataStream, aHeadersStream, aLoadFlags, aSHEntry, firstParty, aDocShell, aRequest);
+ }
+
+ public int CreateLoadInfo(int /*long*/[] loadInfo) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), loadInfo);
+ }
+
+ public int PrepareForNewContentModel() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 5, getAddress());
+ }
+
+ public int SetCurrentURI(int /*long*/ aURI) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 6, getAddress(), aURI);
+ }
+
+ public int FireUnloadNotification() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 7, getAddress());
+ }
+
+ public int GetPresContext(int /*long*/[] aPresContext) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 8, getAddress(), aPresContext);
+ }
+
+ public int GetPresShell(int /*long*/[] aPresShell) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 9, getAddress(), aPresShell);
+ }
+
+ public int GetEldestPresShell(int /*long*/[] aEldestPresShell) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 10, getAddress(), aEldestPresShell);
+ }
+
+ public int GetContentViewer(int /*long*/[] aContentViewer) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 11, getAddress(), aContentViewer);
+ }
+
+ public int GetChromeEventHandler(int /*long*/[] aChromeEventHandler) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 12, getAddress(), aChromeEventHandler);
+ }
+
+ public int SetChromeEventHandler(int /*long*/ aChromeEventHandler) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 13, getAddress(), aChromeEventHandler);
+ }
+
+ public int GetParentURIContentListener(int /*long*/[] aParentURIContentListener) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 14, getAddress(), aParentURIContentListener);
+ }
+
+ public int SetParentURIContentListener(int /*long*/ aParentURIContentListener) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 15, getAddress(), aParentURIContentListener);
+ }
+
+ public int GetDocumentCharsetInfo(int /*long*/[] aDocumentCharsetInfo) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 16, getAddress(), aDocumentCharsetInfo);
+ }
+
+ public int SetDocumentCharsetInfo(int /*long*/ aDocumentCharsetInfo) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 17, getAddress(), aDocumentCharsetInfo);
+ }
+
+ public int GetAllowPlugins(int[] aAllowPlugins) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 18, getAddress(), aAllowPlugins);
+ }
+
+ public int SetAllowPlugins(int aAllowPlugins) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 19, getAddress(), aAllowPlugins);
+ }
+
+ public int GetAllowJavascript(int[] aAllowJavascript) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 20, getAddress(), aAllowJavascript);
+ }
+
+ public int SetAllowJavascript(int aAllowJavascript) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 21, getAddress(), aAllowJavascript);
+ }
+
+ public int GetAllowMetaRedirects(int[] aAllowMetaRedirects) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 22, getAddress(), aAllowMetaRedirects);
+ }
+
+ public int SetAllowMetaRedirects(int aAllowMetaRedirects) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 23, getAddress(), aAllowMetaRedirects);
+ }
+
+ public int GetAllowSubframes(int[] aAllowSubframes) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 24, getAddress(), aAllowSubframes);
+ }
+
+ public int SetAllowSubframes(int aAllowSubframes) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 25, getAddress(), aAllowSubframes);
+ }
+
+ public int GetAllowImages(int[] aAllowImages) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 26, getAddress(), aAllowImages);
+ }
+
+ public int SetAllowImages(int aAllowImages) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 27, getAddress(), aAllowImages);
+ }
+
+ public static final int ENUMERATE_FORWARDS = 0;
+
+ public static final int ENUMERATE_BACKWARDS = 1;
+
+ public int GetDocShellEnumerator(int aItemType, int aDirection, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 28, getAddress(), aItemType, aDirection, _retval);
+ }
+
+ public static final int APP_TYPE_UNKNOWN = 0;
+
+ public static final int APP_TYPE_MAIL = 1;
+
+ public int GetAppType(int[] aAppType) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 29, getAddress(), aAppType);
+ }
+
+ public int SetAppType(int aAppType) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 30, getAddress(), aAppType);
+ }
+
+ public int GetAllowAuth(int[] aAllowAuth) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 31, getAddress(), aAllowAuth);
+ }
+
+ public int SetAllowAuth(int aAllowAuth) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 32, getAddress(), aAllowAuth);
+ }
+
+ public int GetZoom(float[] aZoom) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 33, getAddress(), aZoom);
+ }
+
+ public int SetZoom(float aZoom) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 34, getAddress(), aZoom);
+ }
+
+ public int GetMarginWidth(int[] aMarginWidth) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 35, getAddress(), aMarginWidth);
+ }
+
+ public int SetMarginWidth(int aMarginWidth) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 36, getAddress(), aMarginWidth);
+ }
+
+ public int GetMarginHeight(int[] aMarginHeight) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 37, getAddress(), aMarginHeight);
+ }
+
+ public int SetMarginHeight(int aMarginHeight) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 38, getAddress(), aMarginHeight);
+ }
+
+ public int GetHasFocus(int[] aHasFocus) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 39, getAddress(), aHasFocus);
+ }
+
+ public int SetHasFocus(int aHasFocus) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 40, getAddress(), aHasFocus);
+ }
+
+ public int GetCanvasHasFocus(int[] aCanvasHasFocus) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 41, getAddress(), aCanvasHasFocus);
+ }
+
+ public int SetCanvasHasFocus(int aCanvasHasFocus) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 42, getAddress(), aCanvasHasFocus);
+ }
+
+ public int TabToTreeOwner(int forward, int[] tookFocus) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 43, getAddress(), forward, tookFocus);
+ }
+
+ public static final int BUSY_FLAGS_NONE = 0;
+
+ public static final int BUSY_FLAGS_BUSY = 1;
+
+ public static final int BUSY_FLAGS_BEFORE_PAGE_LOAD = 2;
+
+ public static final int BUSY_FLAGS_PAGE_LOADING = 4;
+
+ public static final int LOAD_CMD_NORMAL = 1;
+
+ public static final int LOAD_CMD_RELOAD = 2;
+
+ public static final int LOAD_CMD_HISTORY = 4;
+
+ public int GetBusyFlags(int[] aBusyFlags) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 44, getAddress(), aBusyFlags);
+ }
+
+ public int GetLoadType(int[] aLoadType) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 45, getAddress(), aLoadType);
+ }
+
+ public int SetLoadType(int aLoadType) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 46, getAddress(), aLoadType);
+ }
+
+ public int IsBeingDestroyed(int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 47, getAddress(), _retval);
+ }
+
+ public int GetIsExecutingOnLoadHandler(int[] aIsExecutingOnLoadHandler) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 48, getAddress(), aIsExecutingOnLoadHandler);
+ }
+
+ public int GetLayoutHistoryState(int /*long*/[] aLayoutHistoryState) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 49, getAddress(), aLayoutHistoryState);
+ }
+
+ public int SetLayoutHistoryState(int /*long*/ aLayoutHistoryState) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 50, getAddress(), aLayoutHistoryState);
+ }
+
+ public int GetShouldSaveLayoutState(int[] aShouldSaveLayoutState) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 51, getAddress(), aShouldSaveLayoutState);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDocShell_1_8.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDocShell_1_8.java
new file mode 100644
index 0000000000..526c7595e1
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDocShell_1_8.java
@@ -0,0 +1,317 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIDocShell_1_8 extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 61;
+
+ public static final String NS_IDOCSHELL_IID_STR =
+ "9f0c7461-b9a4-47f6-b88c-421dce1bce66";
+
+ public static final nsID NS_IDOCSHELL_IID =
+ new nsID(NS_IDOCSHELL_IID_STR);
+
+ public nsIDocShell_1_8(int /*long*/ address) {
+ super(address);
+ }
+
+ public int LoadURI(int /*long*/ uri, int /*long*/ loadInfo, int aLoadFlags, int firstParty) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), uri, loadInfo, aLoadFlags, firstParty);
+ }
+
+ public int LoadStream(int /*long*/ aStream, int /*long*/ aURI, int /*long*/ aContentType, int /*long*/ aContentCharset, int /*long*/ aLoadInfo) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), aStream, aURI, aContentType, aContentCharset, aLoadInfo);
+ }
+
+ public static final int INTERNAL_LOAD_FLAGS_NONE = 0;
+
+ public static final int INTERNAL_LOAD_FLAGS_INHERIT_OWNER = 1;
+
+ public static final int INTERNAL_LOAD_FLAGS_DONT_SEND_REFERRER = 2;
+
+ public int InternalLoad(int /*long*/ aURI, int /*long*/ aReferrer, int /*long*/ aOwner, int aFlags, char[] aWindowTarget, byte[] aTypeHint, int /*long*/ aPostDataStream, int /*long*/ aHeadersStream, int aLoadFlags, int /*long*/ aSHEntry, int firstParty, int /*long*/[] aDocShell, int /*long*/[] aRequest) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), aURI, aReferrer, aOwner, aFlags, aWindowTarget, aTypeHint, aPostDataStream, aHeadersStream, aLoadFlags, aSHEntry, firstParty, aDocShell, aRequest);
+ }
+
+ public int CreateLoadInfo(int /*long*/[] loadInfo) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), loadInfo);
+ }
+
+ public int PrepareForNewContentModel() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 5, getAddress());
+ }
+
+ public int SetCurrentURI(int /*long*/ aURI) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 6, getAddress(), aURI);
+ }
+
+ public int FirePageHideNotification(int isUnload) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 7, getAddress(), isUnload);
+ }
+
+ public int GetPresContext(int /*long*/[] aPresContext) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 8, getAddress(), aPresContext);
+ }
+
+ public int GetPresShell(int /*long*/[] aPresShell) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 9, getAddress(), aPresShell);
+ }
+
+ public int GetEldestPresShell(int /*long*/[] aEldestPresShell) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 10, getAddress(), aEldestPresShell);
+ }
+
+ public int GetContentViewer(int /*long*/[] aContentViewer) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 11, getAddress(), aContentViewer);
+ }
+
+ public int GetChromeEventHandler(int /*long*/[] aChromeEventHandler) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 12, getAddress(), aChromeEventHandler);
+ }
+
+ public int SetChromeEventHandler(int /*long*/ aChromeEventHandler) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 13, getAddress(), aChromeEventHandler);
+ }
+
+ public int GetDocumentCharsetInfo(int /*long*/[] aDocumentCharsetInfo) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 14, getAddress(), aDocumentCharsetInfo);
+ }
+
+ public int SetDocumentCharsetInfo(int /*long*/ aDocumentCharsetInfo) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 15, getAddress(), aDocumentCharsetInfo);
+ }
+
+ public int GetAllowPlugins(int[] aAllowPlugins) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 16, getAddress(), aAllowPlugins);
+ }
+
+ public int SetAllowPlugins(int aAllowPlugins) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 17, getAddress(), aAllowPlugins);
+ }
+
+ public int GetAllowJavascript(int[] aAllowJavascript) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 18, getAddress(), aAllowJavascript);
+ }
+
+ public int SetAllowJavascript(int aAllowJavascript) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 19, getAddress(), aAllowJavascript);
+ }
+
+ public int GetAllowMetaRedirects(int[] aAllowMetaRedirects) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 20, getAddress(), aAllowMetaRedirects);
+ }
+
+ public int SetAllowMetaRedirects(int aAllowMetaRedirects) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 21, getAddress(), aAllowMetaRedirects);
+ }
+
+ public int GetAllowSubframes(int[] aAllowSubframes) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 22, getAddress(), aAllowSubframes);
+ }
+
+ public int SetAllowSubframes(int aAllowSubframes) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 23, getAddress(), aAllowSubframes);
+ }
+
+ public int GetAllowImages(int[] aAllowImages) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 24, getAddress(), aAllowImages);
+ }
+
+ public int SetAllowImages(int aAllowImages) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 25, getAddress(), aAllowImages);
+ }
+
+ public static final int ENUMERATE_FORWARDS = 0;
+
+ public static final int ENUMERATE_BACKWARDS = 1;
+
+ public int GetDocShellEnumerator(int aItemType, int aDirection, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 26, getAddress(), aItemType, aDirection, _retval);
+ }
+
+ public static final int APP_TYPE_UNKNOWN = 0;
+
+ public static final int APP_TYPE_MAIL = 1;
+
+ public static final int APP_TYPE_EDITOR = 2;
+
+ public int GetAppType(int[] aAppType) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 27, getAddress(), aAppType);
+ }
+
+ public int SetAppType(int aAppType) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 28, getAddress(), aAppType);
+ }
+
+ public int GetAllowAuth(int[] aAllowAuth) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 29, getAddress(), aAllowAuth);
+ }
+
+ public int SetAllowAuth(int aAllowAuth) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 30, getAddress(), aAllowAuth);
+ }
+
+ public int GetZoom(float[] aZoom) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 31, getAddress(), aZoom);
+ }
+
+ public int SetZoom(float aZoom) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 32, getAddress(), aZoom);
+ }
+
+ public int GetMarginWidth(int[] aMarginWidth) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 33, getAddress(), aMarginWidth);
+ }
+
+ public int SetMarginWidth(int aMarginWidth) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 34, getAddress(), aMarginWidth);
+ }
+
+ public int GetMarginHeight(int[] aMarginHeight) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 35, getAddress(), aMarginHeight);
+ }
+
+ public int SetMarginHeight(int aMarginHeight) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 36, getAddress(), aMarginHeight);
+ }
+
+ public int GetHasFocus(int[] aHasFocus) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 37, getAddress(), aHasFocus);
+ }
+
+ public int SetHasFocus(int aHasFocus) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 38, getAddress(), aHasFocus);
+ }
+
+ public int GetCanvasHasFocus(int[] aCanvasHasFocus) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 39, getAddress(), aCanvasHasFocus);
+ }
+
+ public int SetCanvasHasFocus(int aCanvasHasFocus) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 40, getAddress(), aCanvasHasFocus);
+ }
+
+ public int TabToTreeOwner(int forward, int[] tookFocus) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 41, getAddress(), forward, tookFocus);
+ }
+
+ public static final int BUSY_FLAGS_NONE = 0;
+
+ public static final int BUSY_FLAGS_BUSY = 1;
+
+ public static final int BUSY_FLAGS_BEFORE_PAGE_LOAD = 2;
+
+ public static final int BUSY_FLAGS_PAGE_LOADING = 4;
+
+ public static final int LOAD_CMD_NORMAL = 1;
+
+ public static final int LOAD_CMD_RELOAD = 2;
+
+ public static final int LOAD_CMD_HISTORY = 4;
+
+ public int GetBusyFlags(int[] aBusyFlags) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 42, getAddress(), aBusyFlags);
+ }
+
+ public int GetLoadType(int[] aLoadType) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 43, getAddress(), aLoadType);
+ }
+
+ public int SetLoadType(int aLoadType) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 44, getAddress(), aLoadType);
+ }
+
+ public int IsBeingDestroyed(int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 45, getAddress(), _retval);
+ }
+
+ public int GetIsExecutingOnLoadHandler(int[] aIsExecutingOnLoadHandler) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 46, getAddress(), aIsExecutingOnLoadHandler);
+ }
+
+ public int GetLayoutHistoryState(int /*long*/[] aLayoutHistoryState) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 47, getAddress(), aLayoutHistoryState);
+ }
+
+ public int SetLayoutHistoryState(int /*long*/ aLayoutHistoryState) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 48, getAddress(), aLayoutHistoryState);
+ }
+
+ public int GetShouldSaveLayoutState(int[] aShouldSaveLayoutState) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 49, getAddress(), aShouldSaveLayoutState);
+ }
+
+ public int GetSecurityUI(int /*long*/[] aSecurityUI) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 50, getAddress(), aSecurityUI);
+ }
+
+ public int SetSecurityUI(int /*long*/ aSecurityUI) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 51, getAddress(), aSecurityUI);
+ }
+
+ public int SuspendRefreshURIs() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 52, getAddress());
+ }
+
+ public int ResumeRefreshURIs() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 53, getAddress());
+ }
+
+ public int BeginRestore(int /*long*/ viewer, int top) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 54, getAddress(), viewer, top);
+ }
+
+ public int FinishRestore() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 55, getAddress());
+ }
+
+ public int GetRestoringDocument(int[] aRestoringDocument) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 56, getAddress(), aRestoringDocument);
+ }
+
+ public int GetUseErrorPages(int[] aUseErrorPages) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 57, getAddress(), aUseErrorPages);
+ }
+
+ public int SetUseErrorPages(int aUseErrorPages) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 58, getAddress(), aUseErrorPages);
+ }
+
+ public int GetPreviousTransIndex(int[] aPreviousTransIndex) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 59, getAddress(), aPreviousTransIndex);
+ }
+
+ public int GetLoadedTransIndex(int[] aLoadedTransIndex) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 60, getAddress(), aLoadedTransIndex);
+ }
+
+ public int HistoryPurged(int numEntries) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 61, getAddress(), numEntries);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDownload.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDownload.java
new file mode 100644
index 0000000000..365f51f0ee
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDownload.java
@@ -0,0 +1,95 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2004, 2005 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIDownload extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 13;
+
+ public static final String NS_IDOWNLOAD_IID_STR =
+ "06cb92f2-1dd2-11b2-95f2-96dfdfb804a1";
+
+ public static final nsID NS_IDOWNLOAD_IID =
+ new nsID(NS_IDOWNLOAD_IID_STR);
+
+ public nsIDownload(int /*long*/ address) {
+ super(address);
+ }
+
+ public int Init(int /*long*/ aSource, int /*long*/ aTarget, char[] aDisplayName, int /*long*/ aMIMEInfo, long startTime, int /*long*/ aPersist) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aSource, aTarget, aDisplayName, aMIMEInfo, startTime, aPersist);
+ }
+
+ public int GetSource(int /*long*/[] aSource) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), aSource);
+ }
+
+ public int GetTarget(int /*long*/[] aTarget) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), aTarget);
+ }
+
+ public int GetPersist(int /*long*/[] aPersist) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), aPersist);
+ }
+
+ public int GetPercentComplete(int[] aPercentComplete) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 5, getAddress(), aPercentComplete);
+ }
+
+ public int GetDisplayName(int /*long*/[] aDisplayName) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 6, getAddress(), aDisplayName);
+ }
+
+ public int SetDisplayName(char[] aDisplayName) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 7, getAddress(), aDisplayName);
+ }
+
+ public int GetStartTime(long[] aStartTime) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 8, getAddress(), aStartTime);
+ }
+
+ public int GetMIMEInfo(int /*long*/[] aMIMEInfo) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 9, getAddress(), aMIMEInfo);
+ }
+
+ public int GetListener(int /*long*/[] aListener) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 10, getAddress(), aListener);
+ }
+
+ public int SetListener(int /*long*/ aListener) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 11, getAddress(), aListener);
+ }
+
+ public int GetObserver(int /*long*/[] aObserver) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 12, getAddress(), aObserver);
+ }
+
+ public int SetObserver(int /*long*/ aObserver) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 13, getAddress(), aObserver);
+ }
+} \ No newline at end of file
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDownload_1_8.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDownload_1_8.java
new file mode 100644
index 0000000000..aeeb02446e
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIDownload_1_8.java
@@ -0,0 +1,83 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIDownload_1_8 extends nsITransfer {
+
+ static final int LAST_METHOD_ID = nsITransfer.LAST_METHOD_ID + 10;
+
+ public static final String NS_IDOWNLOAD_IID_STR =
+ "9e1fd9f2-9727-4926-85cd-f16c375bba6d";
+
+ public static final nsID NS_IDOWNLOAD_IID =
+ new nsID(NS_IDOWNLOAD_IID_STR);
+
+ public nsIDownload_1_8(int /*long*/ address) {
+ super(address);
+ }
+
+ public int GetTargetFile(int /*long*/[] aTargetFile) {
+ return XPCOM.VtblCall(nsITransfer.LAST_METHOD_ID + 1, getAddress(), aTargetFile);
+ }
+
+ public int GetPercentComplete(int[] aPercentComplete) {
+ return XPCOM.VtblCall(nsITransfer.LAST_METHOD_ID + 2, getAddress(), aPercentComplete);
+ }
+
+ public int GetAmountTransferred(int /*long*/ aAmountTransferred) {
+ return XPCOM.VtblCall(nsITransfer.LAST_METHOD_ID + 3, getAddress(), aAmountTransferred);
+ }
+
+ public int GetSize(int /*long*/ aSize) {
+ return XPCOM.VtblCall(nsITransfer.LAST_METHOD_ID + 4, getAddress(), aSize);
+ }
+
+ public int GetSource(int /*long*/[] aSource) {
+ return XPCOM.VtblCall(nsITransfer.LAST_METHOD_ID + 5, getAddress(), aSource);
+ }
+
+ public int GetTarget(int /*long*/[] aTarget) {
+ return XPCOM.VtblCall(nsITransfer.LAST_METHOD_ID + 6, getAddress(), aTarget);
+ }
+
+ public int GetCancelable(int /*long*/[] aCancelable) {
+ return XPCOM.VtblCall(nsITransfer.LAST_METHOD_ID + 7, getAddress(), aCancelable);
+ }
+
+ public int GetDisplayName(int /*long*/[] aDisplayName) {
+ return XPCOM.VtblCall(nsITransfer.LAST_METHOD_ID + 8, getAddress(), aDisplayName);
+ }
+
+ public int GetStartTime(long[] aStartTime) {
+ return XPCOM.VtblCall(nsITransfer.LAST_METHOD_ID + 9, getAddress(), aStartTime);
+ }
+
+ public int GetMIMEInfo(int /*long*/[] aMIMEInfo) {
+ return XPCOM.VtblCall(nsITransfer.LAST_METHOD_ID + 10, getAddress(), aMIMEInfo);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIEmbeddingSiteWindow.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIEmbeddingSiteWindow.java
new file mode 100644
index 0000000000..3bb3009d49
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIEmbeddingSiteWindow.java
@@ -0,0 +1,81 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIEmbeddingSiteWindow extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 8;
+
+ public static final String NS_IEMBEDDINGSITEWINDOW_IID_STR =
+ "3e5432cd-9568-4bd1-8cbe-d50aba110743";
+
+ public static final nsID NS_IEMBEDDINGSITEWINDOW_IID =
+ new nsID(NS_IEMBEDDINGSITEWINDOW_IID_STR);
+
+ public nsIEmbeddingSiteWindow(int /*long*/ address) {
+ super(address);
+ }
+
+ public static final int DIM_FLAGS_POSITION = 1;
+
+ public static final int DIM_FLAGS_SIZE_INNER = 2;
+
+ public static final int DIM_FLAGS_SIZE_OUTER = 4;
+
+ public int SetDimensions(int flags, int x, int y, int cx, int cy) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), flags, x, y, cx, cy);
+ }
+
+ public int GetDimensions(int flags, int[] x, int[] y, int[] cx, int[] cy) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), flags, x, y, cx, cy);
+ }
+
+ public int SetFocus() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress());
+ }
+
+ public int GetVisibility(int[] aVisibility) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), aVisibility);
+ }
+
+ public int SetVisibility(int aVisibility) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 5, getAddress(), aVisibility);
+ }
+
+ public int GetTitle(int /*long*/[] aTitle) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 6, getAddress(), aTitle);
+ }
+
+ public int SetTitle(char[] aTitle) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 7, getAddress(), aTitle);
+ }
+
+ public int GetSiteWindow(int /*long*/[] aSiteWindow) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 8, getAddress(), aSiteWindow);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIFactory.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIFactory.java
new file mode 100644
index 0000000000..cd83018e5d
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIFactory.java
@@ -0,0 +1,51 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIFactory extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 2;
+
+ public static final String NS_IFACTORY_IID_STR =
+ "00000001-0000-0000-c000-000000000046";
+
+ public static final nsID NS_IFACTORY_IID =
+ new nsID(NS_IFACTORY_IID_STR);
+
+ public nsIFactory(int /*long*/ address) {
+ super(address);
+ }
+
+ public int CreateInstance(int /*long*/ aOuter, nsID iid, int /*long*/[] result) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aOuter, iid, result);
+ }
+
+ public int LockFactory(int lock) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), lock);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIFile.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIFile.java
new file mode 100644
index 0000000000..e5d51b0923
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIFile.java
@@ -0,0 +1,227 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIFile extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 45;
+
+ public static final String NS_IFILE_IID_STR =
+ "c8c0a080-0868-11d3-915f-d9d889d48e3c";
+
+ public static final nsID NS_IFILE_IID =
+ new nsID(NS_IFILE_IID_STR);
+
+ public nsIFile(int /*long*/ address) {
+ super(address);
+ }
+
+ public static final int NORMAL_FILE_TYPE = 0;
+
+ public static final int DIRECTORY_TYPE = 1;
+
+ public int Append(int /*long*/ node) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), node);
+ }
+
+ public int AppendNative(int /*long*/ node) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), node);
+ }
+
+ public int Normalize() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress());
+ }
+
+ public int Create(int type, int permissions) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), type, permissions);
+ }
+
+ public int GetLeafName(int /*long*/ aLeafName) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 5, getAddress(), aLeafName);
+ }
+
+ public int SetLeafName(int /*long*/ aLeafName) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 6, getAddress(), aLeafName);
+ }
+
+ public int GetNativeLeafName(int /*long*/ aNativeLeafName) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 7, getAddress(), aNativeLeafName);
+ }
+
+ public int SetNativeLeafName(int /*long*/ aNativeLeafName) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 8, getAddress(), aNativeLeafName);
+ }
+
+ public int CopyTo(int /*long*/ newParentDir, int /*long*/ newName) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 9, getAddress(), newParentDir, newName);
+ }
+
+ public int CopyToNative(int /*long*/ newParentDir, int /*long*/ newName) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 10, getAddress(), newParentDir, newName);
+ }
+
+ public int CopyToFollowingLinks(int /*long*/ newParentDir, int /*long*/ newName) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 11, getAddress(), newParentDir, newName);
+ }
+
+ public int CopyToFollowingLinksNative(int /*long*/ newParentDir, int /*long*/ newName) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 12, getAddress(), newParentDir, newName);
+ }
+
+ public int MoveTo(int /*long*/ newParentDir, int /*long*/ newName) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 13, getAddress(), newParentDir, newName);
+ }
+
+ public int MoveToNative(int /*long*/ newParentDir, int /*long*/ newName) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 14, getAddress(), newParentDir, newName);
+ }
+
+ public int Remove(int recursive) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 15, getAddress(), recursive);
+ }
+
+ public int GetPermissions(int[] aPermissions) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 16, getAddress(), aPermissions);
+ }
+
+ public int SetPermissions(int aPermissions) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 17, getAddress(), aPermissions);
+ }
+
+ public int GetPermissionsOfLink(int[] aPermissionsOfLink) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 18, getAddress(), aPermissionsOfLink);
+ }
+
+ public int SetPermissionsOfLink(int aPermissionsOfLink) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 19, getAddress(), aPermissionsOfLink);
+ }
+
+ public int GetLastModifiedTime(long[] aLastModifiedTime) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 20, getAddress(), aLastModifiedTime);
+ }
+
+ public int SetLastModifiedTime(long aLastModifiedTime) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 21, getAddress(), aLastModifiedTime);
+ }
+
+ public int GetLastModifiedTimeOfLink(long[] aLastModifiedTimeOfLink) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 22, getAddress(), aLastModifiedTimeOfLink);
+ }
+
+ public int SetLastModifiedTimeOfLink(long aLastModifiedTimeOfLink) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 23, getAddress(), aLastModifiedTimeOfLink);
+ }
+
+ public int GetFileSize(long[] aFileSize) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 24, getAddress(), aFileSize);
+ }
+
+ public int SetFileSize(long aFileSize) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 25, getAddress(), aFileSize);
+ }
+
+ public int GetFileSizeOfLink(long[] aFileSizeOfLink) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 26, getAddress(), aFileSizeOfLink);
+ }
+
+ public int GetTarget(int /*long*/ aTarget) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 27, getAddress(), aTarget);
+ }
+
+ public int GetNativeTarget(int /*long*/ aNativeTarget) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 28, getAddress(), aNativeTarget);
+ }
+
+ public int GetPath(int /*long*/ aPath) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 29, getAddress(), aPath);
+ }
+
+ public int GetNativePath(int /*long*/ aNativePath) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 30, getAddress(), aNativePath);
+ }
+
+ public int Exists(int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 31, getAddress(), _retval);
+ }
+
+ public int IsWritable(int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 32, getAddress(), _retval);
+ }
+
+ public int IsReadable(int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 33, getAddress(), _retval);
+ }
+
+ public int IsExecutable(int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 34, getAddress(), _retval);
+ }
+
+ public int IsHidden(int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 35, getAddress(), _retval);
+ }
+
+ public int IsDirectory(int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 36, getAddress(), _retval);
+ }
+
+ public int IsFile(int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 37, getAddress(), _retval);
+ }
+
+ public int IsSymlink(int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 38, getAddress(), _retval);
+ }
+
+ public int IsSpecial(int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 39, getAddress(), _retval);
+ }
+
+ public int CreateUnique(int type, int permissions) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 40, getAddress(), type, permissions);
+ }
+
+ public int Clone(int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 41, getAddress(), _retval);
+ }
+
+ public int Equals(int /*long*/ inFile, int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 42, getAddress(), inFile, _retval);
+ }
+
+ public int Contains(int /*long*/ inFile, int recur, int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 43, getAddress(), inFile, recur, _retval);
+ }
+
+ public int GetParent(int /*long*/[] aParent) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 44, getAddress(), aParent);
+ }
+
+ public int GetDirectoryEntries(int /*long*/[] aDirectoryEntries) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 45, getAddress(), aDirectoryEntries);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIFilePicker.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIFilePicker.java
new file mode 100644
index 0000000000..916f834f99
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIFilePicker.java
@@ -0,0 +1,118 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2005 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIFilePicker extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 15;
+
+ public static final String NS_IFILEPICKER_IID_STR =
+ "c47de916-1dd1-11b2-8141-82507fa02b21";
+
+ public static final nsID NS_IFILEPICKER_IID =
+ new nsID(NS_IFILEPICKER_IID_STR);
+
+ public nsIFilePicker(int /*long*/ address) {
+ super(address);
+ }
+
+ public static final int modeOpen = 0;
+ public static final int modeSave = 1;
+ public static final int modeGetFolder = 2;
+ public static final int modeOpenMultiple = 3;
+ public static final int returnOK = 0;
+ public static final int returnCancel = 1;
+ public static final int returnReplace = 2;
+ public static final int filterAll = 1;
+ public static final int filterHTML = 2;
+ public static final int filterText = 4;
+ public static final int filterImages = 8;
+ public static final int filterXML = 16;
+ public static final int filterXUL = 32;
+ public static final int filterApps = 64;
+
+ public int Init(int /*long*/ parent, char[] title, int mode) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), parent, title, mode);
+ }
+
+ public int AppendFilters(int filterMask) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), filterMask);
+ }
+
+ public int AppendFilter(char[] title, char[] filter) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), title, filter);
+ }
+
+ public int GetDefaultString(int /*long*/[] aDefaultString) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), aDefaultString);
+ }
+
+ public int SetDefaultString(char[] aDefaultString) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 5, getAddress(), aDefaultString);
+ }
+
+ public int GetDefaultExtension(int /*long*/[] aDefaultExtension) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 6, getAddress(), aDefaultExtension);
+ }
+
+ public int SetDefaultExtension(char[] aDefaultExtension) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 7, getAddress(), aDefaultExtension);
+ }
+
+ public int GetFilterIndex(int[] aFilterIndex) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 8, getAddress(), aFilterIndex);
+ }
+
+ public int SetFilterIndex(int aFilterIndex) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 9, getAddress(), aFilterIndex);
+ }
+
+ public int GetDisplayDirectory(int /*long*/[] aDisplayDirectory) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 10, getAddress(), aDisplayDirectory);
+ }
+
+ public int SetDisplayDirectory(int /*long*/ aDisplayDirectory) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 11, getAddress(), aDisplayDirectory);
+ }
+
+ public int GetFile(int /*long*/[] aFile) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 12, getAddress(), aFile);
+ }
+
+ public int GetFileURL(int /*long*/[] aFileURL) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 13, getAddress(), aFileURL);
+ }
+
+ public int GetFiles(int /*long*/[] aFiles) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 14, getAddress(), aFiles);
+ }
+
+ public int Show(int /*long*/ _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 15, getAddress(), _retval);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIFilePicker_1_8.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIFilePicker_1_8.java
new file mode 100644
index 0000000000..22b0ed3d9a
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIFilePicker_1_8.java
@@ -0,0 +1,118 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIFilePicker_1_8 extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 15;
+
+ public static final String NS_IFILEPICKER_IID_STR =
+ "80faf095-c807-4558-a2cc-185ed70754ea";
+
+ public static final nsID NS_IFILEPICKER_IID =
+ new nsID(NS_IFILEPICKER_IID_STR);
+
+ public nsIFilePicker_1_8(int /*long*/ address) {
+ super(address);
+ }
+
+ public static final int modeOpen = 0;
+ public static final int modeSave = 1;
+ public static final int modeGetFolder = 2;
+ public static final int modeOpenMultiple = 3;
+ public static final int returnOK = 0;
+ public static final int returnCancel = 1;
+ public static final int returnReplace = 2;
+ public static final int filterAll = 1;
+ public static final int filterHTML = 2;
+ public static final int filterText = 4;
+ public static final int filterImages = 8;
+ public static final int filterXML = 16;
+ public static final int filterXUL = 32;
+ public static final int filterApps = 64;
+
+ public int Init(int /*long*/ parent, int /*long*/ title, int mode) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), parent, title, mode);
+ }
+
+ public int AppendFilters(int filterMask) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), filterMask);
+ }
+
+ public int AppendFilter(int /*long*/ title, int /*long*/ filter) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), title, filter);
+ }
+
+ public int GetDefaultString(int /*long*/ aDefaultString) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), aDefaultString);
+ }
+
+ public int SetDefaultString(int /*long*/ aDefaultString) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 5, getAddress(), aDefaultString);
+ }
+
+ public int GetDefaultExtension(int /*long*/ aDefaultExtension) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 6, getAddress(), aDefaultExtension);
+ }
+
+ public int SetDefaultExtension(int /*long*/ aDefaultExtension) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 7, getAddress(), aDefaultExtension);
+ }
+
+ public int GetFilterIndex(int[] aFilterIndex) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 8, getAddress(), aFilterIndex);
+ }
+
+ public int SetFilterIndex(int aFilterIndex) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 9, getAddress(), aFilterIndex);
+ }
+
+ public int GetDisplayDirectory(int /*long*/[] aDisplayDirectory) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 10, getAddress(), aDisplayDirectory);
+ }
+
+ public int SetDisplayDirectory(int /*long*/ aDisplayDirectory) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 11, getAddress(), aDisplayDirectory);
+ }
+
+ public int GetFile(int /*long*/[] aFile) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 12, getAddress(), aFile);
+ }
+
+ public int GetFileURL(int /*long*/[] aFileURL) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 13, getAddress(), aFileURL);
+ }
+
+ public int GetFiles(int /*long*/[] aFiles) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 14, getAddress(), aFiles);
+ }
+
+ public int Show(int /*long*/ _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 15, getAddress(), _retval);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIHelperAppLauncher.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIHelperAppLauncher.java
new file mode 100644
index 0000000000..c003eb68b8
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIHelperAppLauncher.java
@@ -0,0 +1,79 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIHelperAppLauncher extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 9;
+
+ public static final String NS_IHELPERAPPLAUNCHER_IID_STR =
+ "9503d0fe-4c9d-11d4-98d0-001083010e9b";
+
+ public static final nsID NS_IHELPERAPPLAUNCHER_IID =
+ new nsID(NS_IHELPERAPPLAUNCHER_IID_STR);
+
+ public nsIHelperAppLauncher(int /*long*/ address) {
+ super(address);
+ }
+
+ public int GetMIMEInfo(int /*long*/[] aMIMEInfo) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aMIMEInfo);
+ }
+
+ public int GetSource(int /*long*/[] aSource) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), aSource);
+ }
+
+ public int GetSuggestedFileName(int /*long*/[] aSuggestedFileName) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), aSuggestedFileName);
+ }
+
+ public int SaveToDisk(int /*long*/ aNewFileLocation, int aRememberThisPreference) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), aNewFileLocation, aRememberThisPreference);
+ }
+
+ public int LaunchWithApplication(int /*long*/ aApplication, int aRememberThisPreference) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 5, getAddress(), aApplication, aRememberThisPreference);
+ }
+
+ public int Cancel() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 6, getAddress());
+ }
+
+ public int SetWebProgressListener(int /*long*/ aWebProgressListener) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 7, getAddress(), aWebProgressListener);
+ }
+
+ public int CloseProgressWindow() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 8, getAddress());
+ }
+
+ public int GetDownloadInfo(int /*long*/[] aSourceUrl, long[] aTimeDownloadStarted, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 9, getAddress(), aSourceUrl, aTimeDownloadStarted, _retval);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIHelperAppLauncherDialog.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIHelperAppLauncherDialog.java
new file mode 100644
index 0000000000..10ca834a67
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIHelperAppLauncherDialog.java
@@ -0,0 +1,55 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2004, 2005 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIHelperAppLauncherDialog extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 3;
+
+ public static final String NS_IHELPERAPPLAUNCHERDIALOG_IID_STR =
+ "d7ebddf0-4c84-11d4-807a-00600811a9c3";
+
+ public static final nsID NS_IHELPERAPPLAUNCHERDIALOG_IID =
+ new nsID(NS_IHELPERAPPLAUNCHERDIALOG_IID_STR);
+
+ public nsIHelperAppLauncherDialog(int /*long*/ address) {
+ super(address);
+ }
+
+ public int Show(int /*long*/ aLauncher, int /*long*/ aContext) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aLauncher, aContext);
+ }
+
+ public int PromptForSaveToFile(int /*long*/ aWindowContext, char[] aDefaultFile, char[] aSuggestedFileExtension, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), aWindowContext, aDefaultFile, aSuggestedFileExtension, _retval);
+ }
+
+ public int ShowProgressDialog(int /*long*/ aLauncher, int /*long*/ aContext) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), aLauncher, aContext);
+ }
+} \ No newline at end of file
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIHelperAppLauncherDialog_1_9.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIHelperAppLauncherDialog_1_9.java
new file mode 100644
index 0000000000..c97f263869
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIHelperAppLauncherDialog_1_9.java
@@ -0,0 +1,57 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIHelperAppLauncherDialog_1_9 extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 2;
+
+ public static final String NS_IHELPERAPPLAUNCHERDIALOG_IID_STR =
+ "f3704fdc-8ae6-4eba-a3c3-f02958ac0649";
+
+ public static final nsID NS_IHELPERAPPLAUNCHERDIALOG_IID =
+ new nsID(NS_IHELPERAPPLAUNCHERDIALOG_IID_STR);
+
+ public nsIHelperAppLauncherDialog_1_9(int /*long*/ address) {
+ super(address);
+ }
+
+ public static final int REASON_CANTHANDLE = 0;
+
+ public static final int REASON_SERVERREQUEST = 1;
+
+ public static final int REASON_TYPESNIFFED = 2;
+
+ public int Show(int /*long*/ aLauncher, int /*long*/ aWindowContext, int aReason) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aLauncher, aWindowContext, aReason);
+ }
+
+ public int PromptForSaveToFile(int /*long*/ aLauncher, int /*long*/ aWindowContext, char[] aDefaultFileName, char[] aSuggestedFileExtension, int aForcePrompt, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), aLauncher, aWindowContext, aDefaultFileName, aSuggestedFileExtension, aForcePrompt, _retval);
+ }
+} \ No newline at end of file
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIHelperAppLauncher_1_8.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIHelperAppLauncher_1_8.java
new file mode 100644
index 0000000000..1aca93b2f5
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIHelperAppLauncher_1_8.java
@@ -0,0 +1,79 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIHelperAppLauncher_1_8 extends nsICancelable {
+
+ static final int LAST_METHOD_ID = nsICancelable.LAST_METHOD_ID + 9;
+
+ public static final String NS_IHELPERAPPLAUNCHER_IID_STR =
+ "99a0882d-2ff9-4659-9952-9ac531ba5592";
+
+ public static final nsID NS_IHELPERAPPLAUNCHER_IID =
+ new nsID(NS_IHELPERAPPLAUNCHER_IID_STR);
+
+ public nsIHelperAppLauncher_1_8(int /*long*/ address) {
+ super(address);
+ }
+
+ public int GetMIMEInfo(int /*long*/[] aMIMEInfo) {
+ return XPCOM.VtblCall(nsICancelable.LAST_METHOD_ID + 1, getAddress(), aMIMEInfo);
+ }
+
+ public int GetSource(int /*long*/[] aSource) {
+ return XPCOM.VtblCall(nsICancelable.LAST_METHOD_ID + 2, getAddress(), aSource);
+ }
+
+ public int GetSuggestedFileName(int /*long*/ aSuggestedFileName) {
+ return XPCOM.VtblCall(nsICancelable.LAST_METHOD_ID + 3, getAddress(), aSuggestedFileName);
+ }
+
+ public int SaveToDisk(int /*long*/ aNewFileLocation, int aRememberThisPreference) {
+ return XPCOM.VtblCall(nsICancelable.LAST_METHOD_ID + 4, getAddress(), aNewFileLocation, aRememberThisPreference);
+ }
+
+ public int LaunchWithApplication(int /*long*/ aApplication, int aRememberThisPreference) {
+ return XPCOM.VtblCall(nsICancelable.LAST_METHOD_ID + 5, getAddress(), aApplication, aRememberThisPreference);
+ }
+
+ public int SetWebProgressListener(int /*long*/ aWebProgressListener) {
+ return XPCOM.VtblCall(nsICancelable.LAST_METHOD_ID + 6, getAddress(), aWebProgressListener);
+ }
+
+ public int CloseProgressWindow() {
+ return XPCOM.VtblCall(nsICancelable.LAST_METHOD_ID + 7, getAddress());
+ }
+
+ public int GetTargetFile(int /*long*/[] aTargetFile) {
+ return XPCOM.VtblCall(nsICancelable.LAST_METHOD_ID + 8, getAddress(), aTargetFile);
+ }
+
+ public int GetTimeDownloadStarted(int /*long*/ aTimeDownloadStarted) {
+ return XPCOM.VtblCall(nsICancelable.LAST_METHOD_ID + 9, getAddress(), aTimeDownloadStarted);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIHelperAppLauncher_1_9.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIHelperAppLauncher_1_9.java
new file mode 100644
index 0000000000..d277e754a0
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIHelperAppLauncher_1_9.java
@@ -0,0 +1,83 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIHelperAppLauncher_1_9 extends nsICancelable {
+
+ static final int LAST_METHOD_ID = nsICancelable.LAST_METHOD_ID + 10;
+
+ public static final String NS_IHELPERAPPLAUNCHER_IID_STR =
+ "cc75c21a-0a79-4f68-90e1-563253d0c555";
+
+ public static final nsID NS_IHELPERAPPLAUNCHER_IID =
+ new nsID(NS_IHELPERAPPLAUNCHER_IID_STR);
+
+ public nsIHelperAppLauncher_1_9(int /*long*/ address) {
+ super(address);
+ }
+
+ public int GetMIMEInfo(int /*long*/[] aMIMEInfo) {
+ return XPCOM.VtblCall(nsICancelable.LAST_METHOD_ID + 1, getAddress(), aMIMEInfo);
+ }
+
+ public int GetSource(int /*long*/[] aSource) {
+ return XPCOM.VtblCall(nsICancelable.LAST_METHOD_ID + 2, getAddress(), aSource);
+ }
+
+ public int GetSuggestedFileName(int /*long*/ aSuggestedFileName) {
+ return XPCOM.VtblCall(nsICancelable.LAST_METHOD_ID + 3, getAddress(), aSuggestedFileName);
+ }
+
+ public int SaveToDisk(int /*long*/ aNewFileLocation, int aRememberThisPreference) {
+ return XPCOM.VtblCall(nsICancelable.LAST_METHOD_ID + 4, getAddress(), aNewFileLocation, aRememberThisPreference);
+ }
+
+ public int LaunchWithApplication(int /*long*/ aApplication, int aRememberThisPreference) {
+ return XPCOM.VtblCall(nsICancelable.LAST_METHOD_ID + 5, getAddress(), aApplication, aRememberThisPreference);
+ }
+
+ public int SetWebProgressListener(int /*long*/ aWebProgressListener) {
+ return XPCOM.VtblCall(nsICancelable.LAST_METHOD_ID + 6, getAddress(), aWebProgressListener);
+ }
+
+ public int CloseProgressWindow() {
+ return XPCOM.VtblCall(nsICancelable.LAST_METHOD_ID + 7, getAddress());
+ }
+
+ public int GetTargetFile(int /*long*/[] aTargetFile) {
+ return XPCOM.VtblCall(nsICancelable.LAST_METHOD_ID + 8, getAddress(), aTargetFile);
+ }
+
+ public int GetTargetFileIsExecutable(int[] aTargetFileIsExecutable) {
+ return XPCOM.VtblCall(nsICancelable.LAST_METHOD_ID + 9, getAddress(), aTargetFileIsExecutable);
+ }
+
+ public int GetTimeDownloadStarted(int /*long*/ aTimeDownloadStarted) {
+ return XPCOM.VtblCall(nsICancelable.LAST_METHOD_ID + 10, getAddress(), aTimeDownloadStarted);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIIOService.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIIOService.java
new file mode 100644
index 0000000000..a4b52e16f7
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIIOService.java
@@ -0,0 +1,83 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIIOService extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 10;
+
+ public static final String NS_IIOSERVICE_IID_STR =
+ "bddeda3f-9020-4d12-8c70-984ee9f7935e";
+
+ public static final nsID NS_IIOSERVICE_IID =
+ new nsID(NS_IIOSERVICE_IID_STR);
+
+ public nsIIOService(int /*long*/ address) {
+ super(address);
+ }
+
+ public int GetProtocolHandler(byte[] aScheme, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aScheme, _retval);
+ }
+
+ public int GetProtocolFlags(byte[] aScheme, int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), aScheme, _retval);
+ }
+
+ public int NewURI(int /*long*/ aSpec, byte[] aOriginCharset, int /*long*/ aBaseURI, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), aSpec, aOriginCharset, aBaseURI, _retval);
+ }
+
+ public int NewFileURI(int /*long*/ aFile, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), aFile, _retval);
+ }
+
+ public int NewChannelFromURI(int /*long*/ aURI, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 5, getAddress(), aURI, _retval);
+ }
+
+ public int NewChannel(int /*long*/ aSpec, byte[] aOriginCharset, int /*long*/ aBaseURI, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 6, getAddress(), aSpec, aOriginCharset, aBaseURI, _retval);
+ }
+
+ public int GetOffline(int[] aOffline) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 7, getAddress(), aOffline);
+ }
+
+ public int SetOffline(int aOffline) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 8, getAddress(), aOffline);
+ }
+
+ public int AllowPort(int aPort, byte[] aScheme, int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 9, getAddress(), aPort, aScheme, _retval);
+ }
+
+ public int ExtractScheme(int /*long*/ urlString, int /*long*/ _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 10, getAddress(), urlString, _retval);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIInputStream.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIInputStream.java
new file mode 100644
index 0000000000..62959ad4cc
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIInputStream.java
@@ -0,0 +1,63 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIInputStream extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 5;
+
+ public static final String NS_IINPUTSTREAM_IID_STR =
+ "fa9c7f6c-61b3-11d4-9877-00c04fa0cf4a";
+
+ public static final nsID NS_IINPUTSTREAM_IID =
+ new nsID(NS_IINPUTSTREAM_IID_STR);
+
+ public nsIInputStream(int /*long*/ address) {
+ super(address);
+ }
+
+ public int Close() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress());
+ }
+
+ public int Available(int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), _retval);
+ }
+
+ public int Read(byte[] aBuf, int aCount, int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), aBuf, aCount, _retval);
+ }
+
+ public int ReadSegments(int /*long*/ aWriter, int /*long*/ aClosure, int aCount, int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), aWriter, aClosure, aCount, _retval);
+ }
+
+ public int IsNonBlocking(int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 5, getAddress(), _retval);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIInterfaceRequestor.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIInterfaceRequestor.java
new file mode 100644
index 0000000000..16af6e29dc
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIInterfaceRequestor.java
@@ -0,0 +1,47 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2005 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIInterfaceRequestor extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 1;
+
+ public static final String NS_IINTERFACEREQUESTOR_IID_STR =
+ "033a1470-8b2a-11d3-af88-00a024ffc08c";
+
+ public static final nsID NS_IINTERFACEREQUESTOR_IID =
+ new nsID(NS_IINTERFACEREQUESTOR_IID_STR);
+
+ public nsIInterfaceRequestor(int /*long*/ address) {
+ super(address);
+ }
+
+ public int GetInterface(nsID uuid, int /*long*/[] result) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), uuid, result);
+ }
+} \ No newline at end of file
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIJSContextStack.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIJSContextStack.java
new file mode 100644
index 0000000000..5dbedbe533
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIJSContextStack.java
@@ -0,0 +1,59 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIJSContextStack extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 4;
+
+ public static final String NS_IJSCONTEXTSTACK_IID_STR =
+ "c67d8270-3189-11d3-9885-006008962422";
+
+ public static final nsID NS_IJSCONTEXTSTACK_IID =
+ new nsID(NS_IJSCONTEXTSTACK_IID_STR);
+
+ public nsIJSContextStack(int /*long*/ address) {
+ super(address);
+ }
+
+ public int GetCount(int[] aCount) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aCount);
+ }
+
+ public int Peek(int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), _retval);
+ }
+
+ public int Pop(int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), _retval);
+ }
+
+ public int Push(int /*long*/ cx) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), cx);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsILocalFile.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsILocalFile.java
new file mode 100644
index 0000000000..772bec8096
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsILocalFile.java
@@ -0,0 +1,111 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsILocalFile extends nsIFile {
+
+ static final int LAST_METHOD_ID = nsIFile.LAST_METHOD_ID + 17;
+
+ public static final String NS_ILOCALFILE_IID_STR =
+ "aa610f20-a889-11d3-8c81-000064657374";
+
+ public static final nsID NS_ILOCALFILE_IID =
+ new nsID(NS_ILOCALFILE_IID_STR);
+
+ public nsILocalFile(int /*long*/ address) {
+ super(address);
+ }
+
+ public int InitWithPath(int /*long*/ filePath) {
+ return XPCOM.VtblCall(nsIFile.LAST_METHOD_ID + 1, getAddress(), filePath);
+ }
+
+ public int InitWithNativePath(int /*long*/ filePath) {
+ return XPCOM.VtblCall(nsIFile.LAST_METHOD_ID + 2, getAddress(), filePath);
+ }
+
+ public int InitWithFile(int /*long*/ aFile) {
+ return XPCOM.VtblCall(nsIFile.LAST_METHOD_ID + 3, getAddress(), aFile);
+ }
+
+ public int GetFollowLinks(int[] aFollowLinks) {
+ return XPCOM.VtblCall(nsIFile.LAST_METHOD_ID + 4, getAddress(), aFollowLinks);
+ }
+
+ public int SetFollowLinks(int aFollowLinks) {
+ return XPCOM.VtblCall(nsIFile.LAST_METHOD_ID + 5, getAddress(), aFollowLinks);
+ }
+
+ public int OpenNSPRFileDesc(int flags, int mode, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsIFile.LAST_METHOD_ID + 6, getAddress(), flags, mode, _retval);
+ }
+
+ public int OpenANSIFileDesc(byte[] mode, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsIFile.LAST_METHOD_ID + 7, getAddress(), mode, _retval);
+ }
+
+ public int Load(int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsIFile.LAST_METHOD_ID + 8, getAddress(), _retval);
+ }
+
+ public int GetDiskSpaceAvailable(long[] aDiskSpaceAvailable) {
+ return XPCOM.VtblCall(nsIFile.LAST_METHOD_ID + 9, getAddress(), aDiskSpaceAvailable);
+ }
+
+ public int AppendRelativePath(int /*long*/ relativeFilePath) {
+ return XPCOM.VtblCall(nsIFile.LAST_METHOD_ID + 10, getAddress(), relativeFilePath);
+ }
+
+ public int AppendRelativeNativePath(int /*long*/ relativeFilePath) {
+ return XPCOM.VtblCall(nsIFile.LAST_METHOD_ID + 11, getAddress(), relativeFilePath);
+ }
+
+ public int GetPersistentDescriptor(int /*long*/ aPersistentDescriptor) {
+ return XPCOM.VtblCall(nsIFile.LAST_METHOD_ID + 12, getAddress(), aPersistentDescriptor);
+ }
+
+ public int SetPersistentDescriptor(int /*long*/ aPersistentDescriptor) {
+ return XPCOM.VtblCall(nsIFile.LAST_METHOD_ID + 13, getAddress(), aPersistentDescriptor);
+ }
+
+ public int Reveal() {
+ return XPCOM.VtblCall(nsIFile.LAST_METHOD_ID + 14, getAddress());
+ }
+
+ public int Launch() {
+ return XPCOM.VtblCall(nsIFile.LAST_METHOD_ID + 15, getAddress());
+ }
+
+ public int GetRelativeDescriptor(int /*long*/ fromFile, int /*long*/ _retval) {
+ return XPCOM.VtblCall(nsIFile.LAST_METHOD_ID + 16, getAddress(), fromFile, _retval);
+ }
+
+ public int SetRelativeDescriptor(int /*long*/ fromFile, int /*long*/ relativeDesc) {
+ return XPCOM.VtblCall(nsIFile.LAST_METHOD_ID + 17, getAddress(), fromFile, relativeDesc);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIMemory.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIMemory.java
new file mode 100644
index 0000000000..641777edbd
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIMemory.java
@@ -0,0 +1,63 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIMemory extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 5;
+
+ public static final String NS_IMEMORY_IID_STR =
+ "59e7e77a-38e4-11d4-8cf5-0060b0fc14a3";
+
+ public static final nsID NS_IMEMORY_IID =
+ new nsID(NS_IMEMORY_IID_STR);
+
+ public nsIMemory(int /*long*/ address) {
+ super(address);
+ }
+
+ public int /*long*/ Alloc(int size) {
+ return XPCOM.nsIMemory_Alloc(getAddress(), size);
+ }
+
+ public int /*long*/ Realloc(int /*long*/ ptr, int newSize) {
+ return XPCOM.nsIMemory_Realloc(getAddress(), ptr, newSize);
+ }
+
+ public int Free(int /*long*/ ptr) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), ptr);
+ }
+
+ public int HeapMinimize(int immediate) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), immediate);
+ }
+
+ public int IsLowMemory(int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 5, getAddress(), _retval);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIObserverService.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIObserverService.java
new file mode 100644
index 0000000000..5b3775d472
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIObserverService.java
@@ -0,0 +1,59 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIObserverService extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 4;
+
+ public static final String NS_IOBSERVERSERVICE_IID_STR =
+ "d07f5192-e3d1-11d2-8acd-00105a1b8860";
+
+ public static final nsID NS_IOBSERVERSERVICE_IID =
+ new nsID(NS_IOBSERVERSERVICE_IID_STR);
+
+ public nsIObserverService(int /*long*/ address) {
+ super(address);
+ }
+
+ public int AddObserver(int /*long*/ anObserver, byte[] aTopic, int ownsWeak) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), anObserver, aTopic, ownsWeak);
+ }
+
+ public int RemoveObserver(int /*long*/ anObserver, byte[] aTopic) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), anObserver, aTopic);
+ }
+
+ public int NotifyObservers(int /*long*/ aSubject, byte[] aTopic, char[] someData) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), aSubject, aTopic, someData);
+ }
+
+ public int EnumerateObservers(byte[] aTopic, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), aTopic, _retval);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIPrefBranch.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIPrefBranch.java
new file mode 100755
index 0000000000..63ed2a3d1d
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIPrefBranch.java
@@ -0,0 +1,123 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIPrefBranch extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 18;
+
+ public static final String NS_IPREFBRANCH_IID_STR =
+ "56c35506-f14b-11d3-99d3-ddbfac2ccf65";
+
+ public static final nsID NS_IPREFBRANCH_IID =
+ new nsID(NS_IPREFBRANCH_IID_STR);
+
+ public nsIPrefBranch(int /*long*/ address) {
+ super(address);
+ }
+
+ public static final int PREF_INVALID = 0;
+
+ public static final int PREF_STRING = 32;
+
+ public static final int PREF_INT = 64;
+
+ public static final int PREF_BOOL = 128;
+
+ public int GetRoot(int /*long*/[] aRoot) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aRoot);
+ }
+
+ public int GetPrefType(byte[] aPrefName, int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), aPrefName, _retval);
+ }
+
+ public int GetBoolPref(byte[] aPrefName, int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), aPrefName, _retval);
+ }
+
+ public int SetBoolPref(byte[] aPrefName, int aValue) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), aPrefName, aValue);
+ }
+
+ public int GetCharPref(byte[] aPrefName, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 5, getAddress(), aPrefName, _retval);
+ }
+
+ public int SetCharPref(byte[] aPrefName, byte[] aValue) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 6, getAddress(), aPrefName, aValue);
+ }
+
+ public int GetIntPref(byte[] aPrefName, int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 7, getAddress(), aPrefName, _retval);
+ }
+
+ public int SetIntPref(byte[] aPrefName, int aValue) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 8, getAddress(), aPrefName, aValue);
+ }
+
+ public int GetComplexValue(byte[] aPrefName, nsID aType, int /*long*/[] aValue) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 9, getAddress(), aPrefName, aType, aValue);
+ }
+
+ public int SetComplexValue(byte[] aPrefName, nsID aType, int /*long*/ aValue) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 10, getAddress(), aPrefName, aType, aValue);
+ }
+
+ public int ClearUserPref(byte[] aPrefName) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 11, getAddress(), aPrefName);
+ }
+
+ public int LockPref(byte[] aPrefName) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 12, getAddress(), aPrefName);
+ }
+
+ public int PrefHasUserValue(byte[] aPrefName, int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 13, getAddress(), aPrefName, _retval);
+ }
+
+ public int PrefIsLocked(byte[] aPrefName, int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 14, getAddress(), aPrefName, _retval);
+ }
+
+ public int UnlockPref(byte[] aPrefName) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 15, getAddress(), aPrefName);
+ }
+
+ public int DeleteBranch(byte[] aStartingAt) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 16, getAddress(), aStartingAt);
+ }
+
+ public int GetChildList(byte[] aStartingAt, int[] aCount, int /*long*/[] aChildArray) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 17, getAddress(), aStartingAt, aCount, aChildArray);
+ }
+
+ public int ResetBranch(byte[] aStartingAt) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 18, getAddress(), aStartingAt);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIPrefLocalizedString.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIPrefLocalizedString.java
new file mode 100755
index 0000000000..ba0c32ac15
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIPrefLocalizedString.java
@@ -0,0 +1,59 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2006 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIPrefLocalizedString extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 4;
+
+ public static final String NS_IPREFLOCALIZEDSTRING_IID_STR =
+ "ae419e24-1dd1-11b2-b39a-d3e5e7073802";
+
+ public static final nsID NS_IPREFLOCALIZEDSTRING_IID =
+ new nsID(NS_IPREFLOCALIZEDSTRING_IID_STR);
+
+ public nsIPrefLocalizedString(int /*long*/ address) {
+ super(address);
+ }
+
+ public int GetData(int /*long*/[] aData) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aData);
+ }
+
+ public int SetData(char[] aData) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), aData);
+ }
+
+ public int ToString(int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), _retval);
+ }
+
+ public int SetDataWithLength(int length, char[] data) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), length, data);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIPrefService.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIPrefService.java
new file mode 100755
index 0000000000..b3fc9fbc75
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIPrefService.java
@@ -0,0 +1,67 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2006 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIPrefService extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 6;
+
+ public static final String NS_IPREFSERVICE_IID_STR =
+ "decb9cc7-c08f-4ea5-be91-a8fc637ce2d2";
+
+ public static final nsID NS_IPREFSERVICE_IID =
+ new nsID(NS_IPREFSERVICE_IID_STR);
+
+ public nsIPrefService(int /*long*/ address) {
+ super(address);
+ }
+
+ public int ReadUserPrefs(int /*long*/ aFile) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aFile);
+ }
+
+ public int ResetPrefs() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress());
+ }
+
+ public int ResetUserPrefs() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress());
+ }
+
+ public int SavePrefFile(int /*long*/ aFile) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), aFile);
+ }
+
+ public int GetBranch(byte[] aPrefRoot, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 5, getAddress(), aPrefRoot, _retval);
+ }
+
+ public int GetDefaultBranch(byte[] aPrefRoot, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 6, getAddress(), aPrefRoot, _retval);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIPrincipal.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIPrincipal.java
new file mode 100644
index 0000000000..d8c34191a1
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIPrincipal.java
@@ -0,0 +1,143 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2009 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIPrincipal extends nsISerializable {
+
+ static final int LAST_METHOD_ID = nsISerializable.LAST_METHOD_ID + 23;
+
+ public static final String NS_IPRINCIPAL_IID_STR =
+ "b8268b9a-2403-44ed-81e3-614075c92034";
+
+ public static final nsID NS_IPRINCIPAL_IID =
+ new nsID(NS_IPRINCIPAL_IID_STR);
+
+ public nsIPrincipal(int /*long*/ address) {
+ super(address);
+ }
+
+ public static final int ENABLE_DENIED = 1;
+
+ public static final int ENABLE_UNKNOWN = 2;
+
+ public static final int ENABLE_WITH_USER_PERMISSION = 3;
+
+ public static final int ENABLE_GRANTED = 4;
+
+ public int GetPreferences(int /*long*/[] prefBranch, int /*long*/[] id, int /*long*/[] subjectName, int /*long*/[] grantedList, int /*long*/[] deniedList, int[] isTrusted) {
+ return XPCOM.VtblCall(nsISerializable.LAST_METHOD_ID + 1, getAddress(), prefBranch, id, subjectName, grantedList, deniedList, isTrusted);
+ }
+
+ public int Equals(int /*long*/ other, int[] _retval) {
+ return XPCOM.VtblCall(nsISerializable.LAST_METHOD_ID + 2, getAddress(), other, _retval);
+ }
+
+ public int GetHashValue(int[] aHashValue) {
+ return XPCOM.VtblCall(nsISerializable.LAST_METHOD_ID + 3, getAddress(), aHashValue);
+ }
+
+ public int GetJSPrincipals(int /*long*/ cx, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISerializable.LAST_METHOD_ID + 4, getAddress(), cx, _retval);
+ }
+
+ public int GetSecurityPolicy(int /*long*/[] aSecurityPolicy) {
+ return XPCOM.VtblCall(nsISerializable.LAST_METHOD_ID + 5, getAddress(), aSecurityPolicy);
+ }
+
+ public int SetSecurityPolicy(int /*long*/ aSecurityPolicy) {
+ return XPCOM.VtblCall(nsISerializable.LAST_METHOD_ID + 6, getAddress(), aSecurityPolicy);
+ }
+
+ public int CanEnableCapability(byte[] capability, int /*long*/ _retval) {
+ return XPCOM.VtblCall(nsISerializable.LAST_METHOD_ID + 7, getAddress(), capability, _retval);
+ }
+
+ public int SetCanEnableCapability(byte[] capability, short canEnable) {
+ return XPCOM.VtblCall(nsISerializable.LAST_METHOD_ID + 8, getAddress(), capability, canEnable);
+ }
+
+ public int IsCapabilityEnabled(byte[] capability, int /*long*/ annotation, int[] _retval) {
+ return XPCOM.VtblCall(nsISerializable.LAST_METHOD_ID + 9, getAddress(), capability, annotation, _retval);
+ }
+
+ public int EnableCapability(byte[] capability, int /*long*/[] annotation) {
+ return XPCOM.VtblCall(nsISerializable.LAST_METHOD_ID + 10, getAddress(), capability, annotation);
+ }
+
+ public int RevertCapability(byte[] capability, int /*long*/[] annotation) {
+ return XPCOM.VtblCall(nsISerializable.LAST_METHOD_ID + 11, getAddress(), capability, annotation);
+ }
+
+ public int DisableCapability(byte[] capability, int /*long*/[] annotation) {
+ return XPCOM.VtblCall(nsISerializable.LAST_METHOD_ID + 12, getAddress(), capability, annotation);
+ }
+
+ public int GetURI(int /*long*/[] aURI) {
+ return XPCOM.VtblCall(nsISerializable.LAST_METHOD_ID + 13, getAddress(), aURI);
+ }
+
+ public int GetDomain(int /*long*/[] aDomain) {
+ return XPCOM.VtblCall(nsISerializable.LAST_METHOD_ID + 14, getAddress(), aDomain);
+ }
+
+ public int SetDomain(int /*long*/ aDomain) {
+ return XPCOM.VtblCall(nsISerializable.LAST_METHOD_ID + 15, getAddress(), aDomain);
+ }
+
+ public int GetOrigin(int /*long*/[] aOrigin) {
+ return XPCOM.VtblCall(nsISerializable.LAST_METHOD_ID + 16, getAddress(), aOrigin);
+ }
+
+ public int GetHasCertificate(int[] aHasCertificate) {
+ return XPCOM.VtblCall(nsISerializable.LAST_METHOD_ID + 17, getAddress(), aHasCertificate);
+ }
+
+ public int GetFingerprint(int /*long*/ aFingerprint) {
+ return XPCOM.VtblCall(nsISerializable.LAST_METHOD_ID + 18, getAddress(), aFingerprint);
+ }
+
+ public int GetPrettyName(int /*long*/ aPrettyName) {
+ return XPCOM.VtblCall(nsISerializable.LAST_METHOD_ID + 19, getAddress(), aPrettyName);
+ }
+
+ public int Subsumes(int /*long*/ other, int[] _retval) {
+ return XPCOM.VtblCall(nsISerializable.LAST_METHOD_ID + 20, getAddress(), other, _retval);
+ }
+
+ public int CheckMayLoad(int /*long*/ uri, int report) {
+ return XPCOM.VtblCall(nsISerializable.LAST_METHOD_ID + 21, getAddress(), uri, report);
+ }
+
+ public int GetSubjectName(int /*long*/ aSubjectName) {
+ return XPCOM.VtblCall(nsISerializable.LAST_METHOD_ID + 22, getAddress(), aSubjectName);
+ }
+
+ public int GetCertificate(int /*long*/[] aCertificate) {
+ return XPCOM.VtblCall(nsISerializable.LAST_METHOD_ID + 23, getAddress(), aCertificate);
+ }
+} \ No newline at end of file
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIProgressDialog.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIProgressDialog.java
new file mode 100644
index 0000000000..2cc99e4f7b
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIProgressDialog.java
@@ -0,0 +1,63 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIProgressDialog extends nsIDownload {
+
+ static final int LAST_METHOD_ID = nsIDownload.LAST_METHOD_ID + 5;
+
+ public static final String NS_IPROGRESSDIALOG_IID_STR =
+ "88a478b3-af65-440a-94dc-ed9b154d2990";
+
+ public static final nsID NS_IPROGRESSDIALOG_IID =
+ new nsID(NS_IPROGRESSDIALOG_IID_STR);
+
+ public nsIProgressDialog(int /*long*/ address) {
+ super(address);
+ }
+
+ public int Open(int /*long*/ aParent) {
+ return XPCOM.VtblCall(nsIDownload.LAST_METHOD_ID + 1, getAddress(), aParent);
+ }
+
+ public int GetCancelDownloadOnClose(int[] aCancelDownloadOnClose) {
+ return XPCOM.VtblCall(nsIDownload.LAST_METHOD_ID + 2, getAddress(), aCancelDownloadOnClose);
+ }
+
+ public int SetCancelDownloadOnClose(int aCancelDownloadOnClose) {
+ return XPCOM.VtblCall(nsIDownload.LAST_METHOD_ID + 3, getAddress(), aCancelDownloadOnClose);
+ }
+
+ public int GetDialog(int /*long*/[] aDialog) {
+ return XPCOM.VtblCall(nsIDownload.LAST_METHOD_ID + 4, getAddress(), aDialog);
+ }
+
+ public int SetDialog(int /*long*/ aDialog) {
+ return XPCOM.VtblCall(nsIDownload.LAST_METHOD_ID + 5, getAddress(), aDialog);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIProgressDialog_1_8.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIProgressDialog_1_8.java
new file mode 100644
index 0000000000..13c38f71e1
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIProgressDialog_1_8.java
@@ -0,0 +1,71 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIProgressDialog_1_8 extends nsIDownload_1_8 {
+
+ static final int LAST_METHOD_ID = nsIDownload_1_8.LAST_METHOD_ID + 7;
+
+ public static final String NS_IPROGRESSDIALOG_IID_STR =
+ "20e790a2-76c6-462d-851a-22ab6cbbe48b";
+
+ public static final nsID NS_IPROGRESSDIALOG_IID =
+ new nsID(NS_IPROGRESSDIALOG_IID_STR);
+
+ public nsIProgressDialog_1_8(int /*long*/ address) {
+ super(address);
+ }
+
+ public int Open(int /*long*/ aParent) {
+ return XPCOM.VtblCall(nsIDownload_1_8.LAST_METHOD_ID + 1, getAddress(), aParent);
+ }
+
+ public int GetCancelDownloadOnClose(int[] aCancelDownloadOnClose) {
+ return XPCOM.VtblCall(nsIDownload_1_8.LAST_METHOD_ID + 2, getAddress(), aCancelDownloadOnClose);
+ }
+
+ public int SetCancelDownloadOnClose(int aCancelDownloadOnClose) {
+ return XPCOM.VtblCall(nsIDownload_1_8.LAST_METHOD_ID + 3, getAddress(), aCancelDownloadOnClose);
+ }
+
+ public int GetObserver(int /*long*/[] aObserver) {
+ return XPCOM.VtblCall(nsIDownload_1_8.LAST_METHOD_ID + 4, getAddress(), aObserver);
+ }
+
+ public int SetObserver(int /*long*/ aObserver) {
+ return XPCOM.VtblCall(nsIDownload_1_8.LAST_METHOD_ID + 5, getAddress(), aObserver);
+ }
+
+ public int GetDialog(int /*long*/[] aDialog) {
+ return XPCOM.VtblCall(nsIDownload_1_8.LAST_METHOD_ID + 6, getAddress(), aDialog);
+ }
+
+ public int SetDialog(int /*long*/ aDialog) {
+ return XPCOM.VtblCall(nsIDownload_1_8.LAST_METHOD_ID + 7, getAddress(), aDialog);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIPromptService.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIPromptService.java
new file mode 100644
index 0000000000..92577e4f08
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIPromptService.java
@@ -0,0 +1,113 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIPromptService extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 9;
+
+ public static final String NS_IPROMPTSERVICE_IID_STR =
+ "1630c61a-325e-49ca-8759-a31b16c47aa5";
+
+ public static final nsID NS_IPROMPTSERVICE_IID =
+ new nsID(NS_IPROMPTSERVICE_IID_STR);
+
+ public nsIPromptService(int /*long*/ address) {
+ super(address);
+ }
+
+ public int Alert(int /*long*/ aParent, char[] aDialogTitle, char[] aText) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aParent, aDialogTitle, aText);
+ }
+
+ public int AlertCheck(int /*long*/ aParent, char[] aDialogTitle, char[] aText, char[] aCheckMsg, int[] aCheckState) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), aParent, aDialogTitle, aText, aCheckMsg, aCheckState);
+ }
+
+ public int Confirm(int /*long*/ aParent, char[] aDialogTitle, char[] aText, int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), aParent, aDialogTitle, aText, _retval);
+ }
+
+ public int ConfirmCheck(int /*long*/ aParent, char[] aDialogTitle, char[] aText, char[] aCheckMsg, int[] aCheckState, int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), aParent, aDialogTitle, aText, aCheckMsg, aCheckState, _retval);
+ }
+
+ public static final int BUTTON_POS_0 = 1;
+
+ public static final int BUTTON_POS_1 = 256;
+
+ public static final int BUTTON_POS_2 = 65536;
+
+ public static final int BUTTON_TITLE_OK = 1;
+
+ public static final int BUTTON_TITLE_CANCEL = 2;
+
+ public static final int BUTTON_TITLE_YES = 3;
+
+ public static final int BUTTON_TITLE_NO = 4;
+
+ public static final int BUTTON_TITLE_SAVE = 5;
+
+ public static final int BUTTON_TITLE_DONT_SAVE = 6;
+
+ public static final int BUTTON_TITLE_REVERT = 7;
+
+ public static final int BUTTON_TITLE_IS_STRING = 127;
+
+ public static final int BUTTON_POS_0_DEFAULT = 0;
+
+ public static final int BUTTON_POS_1_DEFAULT = 16777216;
+
+ public static final int BUTTON_POS_2_DEFAULT = 33554432;
+
+ public static final int BUTTON_DELAY_ENABLE = 67108864;
+
+ public static final int STD_OK_CANCEL_BUTTONS = 513;
+
+ public static final int STD_YES_NO_BUTTONS = 1027;
+
+ public int ConfirmEx(int /*long*/ aParent, char[] aDialogTitle, char[] aText, int aButtonFlags, char[] aButton0Title, char[] aButton1Title, char[] aButton2Title, char[] aCheckMsg, int[] aCheckState, int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 5, getAddress(), aParent, aDialogTitle, aText, aButtonFlags, aButton0Title, aButton1Title, aButton2Title, aCheckMsg, aCheckState, _retval);
+ }
+
+ public int Prompt(int /*long*/ aParent, char[] aDialogTitle, char[] aText, int /*long*/[] aValue, char[] aCheckMsg, int[] aCheckState, int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 6, getAddress(), aParent, aDialogTitle, aText, aValue, aCheckMsg, aCheckState, _retval);
+ }
+
+ public int PromptUsernameAndPassword(int /*long*/ aParent, char[] aDialogTitle, char[] aText, int /*long*/[] aUsername, int /*long*/[] aPassword, char[] aCheckMsg, int[] aCheckState, int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 7, getAddress(), aParent, aDialogTitle, aText, aUsername, aPassword, aCheckMsg, aCheckState, _retval);
+ }
+
+ public int PromptPassword(int /*long*/ aParent, char[] aDialogTitle, char[] aText, int /*long*/[] aPassword, char[] aCheckMsg, int[] aCheckState, int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 8, getAddress(), aParent, aDialogTitle, aText, aPassword, aCheckMsg, aCheckState, _retval);
+ }
+
+ public int Select(int /*long*/ aParent, char[] aDialogTitle, char[] aText, int aCount, int /*long*/[] aSelectList, int[] aOutSelection, int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 9, getAddress(), aParent, aDialogTitle, aText, aCount, aSelectList, aOutSelection, _retval);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIPromptService2.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIPromptService2.java
new file mode 100644
index 0000000000..fec6bc5897
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIPromptService2.java
@@ -0,0 +1,51 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIPromptService2 extends nsIPromptService {
+
+ static final int LAST_METHOD_ID = nsIPromptService.LAST_METHOD_ID + 2;
+
+ public static final String NS_IPROMPTSERVICE2_IID_STR =
+ "cf86d196-dbee-4482-9dfa-3477aa128319";
+
+ public static final nsID NS_IPROMPTSERVICE2_IID =
+ new nsID(NS_IPROMPTSERVICE2_IID_STR);
+
+ public nsIPromptService2(int /*long*/ address) {
+ super(address);
+ }
+
+ public int PromptAuth(int /*long*/ aParent, int /*long*/ aChannel, int level, int /*long*/ authInfo, char[] checkboxLabel, int[] checkValue, int[] _retval) {
+ return XPCOM.VtblCall(nsIPromptService.LAST_METHOD_ID + 1, getAddress(), aParent, aChannel, level, authInfo, checkboxLabel, checkValue, _retval);
+ }
+
+ public int AsyncPromptAuth(int /*long*/ aParent, int /*long*/ aChannel, int /*long*/ aCallback, int /*long*/ aContext, int level, int /*long*/ authInfo, char[] checkboxLabel, int[] checkValue, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsIPromptService.LAST_METHOD_ID + 2, getAddress(), aParent, aChannel, aCallback, aContext, level, authInfo, checkboxLabel, checkValue, _retval);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIProperties.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIProperties.java
new file mode 100644
index 0000000000..6311098ca2
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIProperties.java
@@ -0,0 +1,63 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIProperties extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 5;
+
+ public static final String NS_IPROPERTIES_IID_STR =
+ "78650582-4e93-4b60-8e85-26ebd3eb14ca";
+
+ public static final nsID NS_IPROPERTIES_IID =
+ new nsID(NS_IPROPERTIES_IID_STR);
+
+ public nsIProperties(int /*long*/ address) {
+ super(address);
+ }
+
+ public int Get(byte[] prop, nsID iid, int /*long*/[] result) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), prop, iid, result);
+ }
+
+ public int Set(byte[] prop, int /*long*/ value) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), prop, value);
+ }
+
+ public int Has(byte[] prop, int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), prop, _retval);
+ }
+
+ public int Undefine(byte[] prop) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), prop);
+ }
+
+ public int GetKeys(int[] count, int /*long*/[] keys) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 5, getAddress(), count, keys);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIRequest.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIRequest.java
new file mode 100644
index 0000000000..909ad0de0c
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIRequest.java
@@ -0,0 +1,101 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIRequest extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 10;
+
+ public static final String NS_IREQUEST_IID_STR =
+ "ef6bfbd2-fd46-48d8-96b7-9f8f0fd387fe";
+
+ public static final nsID NS_IREQUEST_IID =
+ new nsID(NS_IREQUEST_IID_STR);
+
+ public nsIRequest(int /*long*/ address) {
+ super(address);
+ }
+
+ public int GetName(int /*long*/ aName) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aName);
+ }
+
+ public int IsPending(int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), _retval);
+ }
+
+ public int GetStatus(int /*long*/[] aStatus) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), aStatus);
+ }
+
+ public int Cancel(int aStatus) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), aStatus);
+ }
+
+ public int Suspend() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 5, getAddress());
+ }
+
+ public int Resume() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 6, getAddress());
+ }
+
+ public int GetLoadGroup(int /*long*/[] aLoadGroup) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 7, getAddress(), aLoadGroup);
+ }
+
+ public int SetLoadGroup(int /*long*/ aLoadGroup) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 8, getAddress(), aLoadGroup);
+ }
+
+ public int GetLoadFlags(int /*long*/[] aLoadFlags) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 9, getAddress(), aLoadFlags);
+ }
+
+ public int SetLoadFlags(int aLoadFlags) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 10, getAddress(), aLoadFlags);
+ }
+
+ public static final int LOAD_NORMAL = 0;
+
+ public static final int LOAD_BACKGROUND = 1;
+
+ public static final int INHIBIT_CACHING = 128;
+
+ public static final int INHIBIT_PERSISTENT_CACHING = 256;
+
+ public static final int LOAD_BYPASS_CACHE = 512;
+
+ public static final int LOAD_FROM_CACHE = 1024;
+
+ public static final int VALIDATE_ALWAYS = 2048;
+
+ public static final int VALIDATE_NEVER = 4096;
+
+ public static final int VALIDATE_ONCE_PER_SESSION = 8192;
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIScriptSecurityManager_1_9.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIScriptSecurityManager_1_9.java
new file mode 100644
index 0000000000..b2b7de895f
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIScriptSecurityManager_1_9.java
@@ -0,0 +1,159 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2009 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIScriptSecurityManager_1_9 extends nsIXPCSecurityManager {
+
+ static final int LAST_METHOD_ID = nsIXPCSecurityManager.LAST_METHOD_ID + 26;
+
+ public static final String NS_ISCRIPTSECURITYMANAGER_IID_STR =
+ "3fffd8e8-3fea-442e-a0ed-2ba81ae197d5";
+
+ public static final nsID NS_ISCRIPTSECURITYMANAGER_IID =
+ new nsID(NS_ISCRIPTSECURITYMANAGER_IID_STR);
+
+ public nsIScriptSecurityManager_1_9(int /*long*/ address) {
+ super(address);
+ }
+
+// public int CheckPropertyAccess(int /*long*/ aJSContext, int /*long*/ aJSObject, byte[] aClassName, !ERROR UNKNOWN C TYPE <jsval >! aProperty, int aAction) {
+// return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 1, getAddress(), aJSContext, aJSObject, aClassName, aProperty, aAction);
+// }
+
+// public int CheckConnect(int /*long*/ aJSContext, int /*long*/ aTargetURI, byte[] aClassName, byte[] aProperty) {
+// return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 2, getAddress(), aJSContext, aTargetURI, aClassName, aProperty);
+// }
+
+ public int CheckLoadURIFromScript(int /*long*/ cx, int /*long*/ uri) {
+ return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 3, getAddress(), cx, uri);
+ }
+
+ public static final int STANDARD = 0;
+
+ public static final int LOAD_IS_AUTOMATIC_DOCUMENT_REPLACEMENT = 1;
+
+ public static final int ALLOW_CHROME = 2;
+
+ public static final int DISALLOW_INHERIT_PRINCIPAL = 4;
+
+ public static final int DISALLOW_SCRIPT_OR_DATA = 4;
+
+ public static final int DISALLOW_SCRIPT = 8;
+
+ public int CheckLoadURIWithPrincipal(int /*long*/ aPrincipal, int /*long*/ uri, int flags) {
+ return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 4, getAddress(), aPrincipal, uri, flags);
+ }
+
+ public int CheckLoadURI(int /*long*/ from, int /*long*/ uri, int flags) {
+ return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 5, getAddress(), from, uri, flags);
+ }
+
+ public int CheckLoadURIStrWithPrincipal(int /*long*/ aPrincipal, int /*long*/ uri, int flags) {
+ return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 6, getAddress(), aPrincipal, uri, flags);
+ }
+
+ public int CheckLoadURIStr(int /*long*/ from, int /*long*/ uri, int flags) {
+ return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 7, getAddress(), from, uri, flags);
+ }
+
+ public int CheckFunctionAccess(int /*long*/ cx, int /*long*/ funObj, int /*long*/ targetObj) {
+ return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 8, getAddress(), cx, funObj, targetObj);
+ }
+
+ public int CanExecuteScripts(int /*long*/ cx, int /*long*/ principal, int[] _retval) {
+ return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 9, getAddress(), cx, principal, _retval);
+ }
+
+ public int GetSubjectPrincipal(int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 10, getAddress(), _retval);
+ }
+
+ public int GetSystemPrincipal(int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 11, getAddress(), _retval);
+ }
+
+// public int GetCertificatePrincipal(int /*long*/ aCertFingerprint, int /*long*/ aSubjectName, int /*long*/ aPrettyName, int /*long*/ aCert, int /*long*/ aURI, int /*long*/[] _retval) {
+// return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 12, getAddress(), aCertFingerprint, aSubjectName, aPrettyName, aCert, aURI, _retval);
+// }
+
+ public int GetCodebasePrincipal(int /*long*/ aURI, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 13, getAddress(), aURI, _retval);
+ }
+
+// public int RequestCapability(int /*long*/ principal, byte[] capability, int /*long*/ _retval) {
+// return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 14, getAddress(), principal, capability, _retval);
+// }
+
+ public int IsCapabilityEnabled(byte[] capability, int[] _retval) {
+ return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 15, getAddress(), capability, _retval);
+ }
+
+ public int EnableCapability(byte[] capability) {
+ return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 16, getAddress(), capability);
+ }
+
+ public int RevertCapability(byte[] capability) {
+ return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 17, getAddress(), capability);
+ }
+
+ public int DisableCapability(byte[] capability) {
+ return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 18, getAddress(), capability);
+ }
+
+// public int SetCanEnableCapability(int /*long*/ certificateFingerprint, byte[] capability, !ERROR UNKNOWN C TYPE <PRInt16 >! canEnable) {
+// return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 19, getAddress(), certificateFingerprint, capability, canEnable);
+// }
+
+ public int GetObjectPrincipal(int /*long*/ cx, int /*long*/ obj, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 20, getAddress(), cx, obj, _retval);
+ }
+
+ public int SubjectPrincipalIsSystem(int[] _retval) {
+ return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 21, getAddress(), _retval);
+ }
+
+ public int CheckSameOrigin(int /*long*/ aJSContext, int /*long*/ aTargetURI) {
+ return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 22, getAddress(), aJSContext, aTargetURI);
+ }
+
+ public int CheckSameOriginURI(int /*long*/ aSourceURI, int /*long*/ aTargetURI, int reportError) {
+ return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 23, getAddress(), aSourceURI, aTargetURI, reportError);
+ }
+
+ public int GetPrincipalFromContext(int /*long*/ cx, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 24, getAddress(), cx, _retval);
+ }
+
+ public int GetChannelPrincipal(int /*long*/ aChannel, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 25, getAddress(), aChannel, _retval);
+ }
+
+ public int IsSystemPrincipal(int /*long*/ aPrincipal, int[] _retval) {
+ return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 26, getAddress(), aPrincipal, _retval);
+ }
+} \ No newline at end of file
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIScriptSecurityManager_1_9_1.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIScriptSecurityManager_1_9_1.java
new file mode 100644
index 0000000000..25ae4813d6
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIScriptSecurityManager_1_9_1.java
@@ -0,0 +1,159 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIScriptSecurityManager_1_9_1 extends nsIXPCSecurityManager {
+
+ static final int LAST_METHOD_ID = nsIXPCSecurityManager.LAST_METHOD_ID + 26;
+
+ public static final String NS_ISCRIPTSECURITYMANAGER_IID_STR =
+ "f8e350b9-9f31-451a-8c8f-d10fea26b780";
+
+ public static final nsID NS_ISCRIPTSECURITYMANAGER_IID =
+ new nsID(NS_ISCRIPTSECURITYMANAGER_IID_STR);
+
+ public nsIScriptSecurityManager_1_9_1(int /*long*/ address) {
+ super(address);
+ }
+
+// public int CheckPropertyAccess(int /*long*/ aJSContext, int /*long*/ aJSObject, byte[] aClassName, !ERROR UNKNOWN C TYPE <jsval >! aProperty, int aAction) {
+// return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 1, getAddress(), aJSContext, aJSObject, aClassName, aProperty, aAction);
+// }
+
+ public int CheckConnect(int /*long*/ aJSContext, int /*long*/ aTargetURI, byte[] aClassName, byte[] aProperty) {
+ return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 2, getAddress(), aJSContext, aTargetURI, aClassName, aProperty);
+ }
+
+ public int CheckLoadURIFromScript(int /*long*/ cx, int /*long*/ uri) {
+ return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 3, getAddress(), cx, uri);
+ }
+
+ public static final int STANDARD = 0;
+
+ public static final int LOAD_IS_AUTOMATIC_DOCUMENT_REPLACEMENT = 1;
+
+ public static final int ALLOW_CHROME = 2;
+
+ public static final int DISALLOW_INHERIT_PRINCIPAL = 4;
+
+ public static final int DISALLOW_SCRIPT_OR_DATA = 4;
+
+ public static final int DISALLOW_SCRIPT = 8;
+
+ public int CheckLoadURIWithPrincipal(int /*long*/ aPrincipal, int /*long*/ uri, int flags) {
+ return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 4, getAddress(), aPrincipal, uri, flags);
+ }
+
+ public int CheckLoadURI(int /*long*/ from, int /*long*/ uri, int flags) {
+ return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 5, getAddress(), from, uri, flags);
+ }
+
+ public int CheckLoadURIStrWithPrincipal(int /*long*/ aPrincipal, int /*long*/ uri, int flags) {
+ return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 6, getAddress(), aPrincipal, uri, flags);
+ }
+
+ public int CheckLoadURIStr(int /*long*/ from, int /*long*/ uri, int flags) {
+ return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 7, getAddress(), from, uri, flags);
+ }
+
+ public int CheckFunctionAccess(int /*long*/ cx, int /*long*/ funObj, int /*long*/ targetObj) {
+ return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 8, getAddress(), cx, funObj, targetObj);
+ }
+
+// public int CanExecuteScripts(int /*long*/ cx, int /*long*/ principal, int[] _retval NS_OUTPARAM) {
+// return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 9, getAddress(), cx, principal, _retval NS_OUTPARAM);
+// }
+
+// public int GetSubjectPrincipal(int /*long*/[] _retval NS_OUTPARAM) {
+// return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 10, getAddress(), _retval NS_OUTPARAM);
+// }
+
+ public int GetSystemPrincipal(int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 11, getAddress(), _retval);
+ }
+
+// public int GetCertificatePrincipal(int /*long*/ aCertFingerprint, int /*long*/ aSubjectName, int /*long*/ aPrettyName, int /*long*/ aCert, int /*long*/ aURI, int /*long*/[] _retval NS_OUTPARAM) {
+// return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 12, getAddress(), aCertFingerprint, aSubjectName, aPrettyName, aCert, aURI, _retval NS_OUTPARAM);
+// }
+
+// public int GetCodebasePrincipal(int /*long*/ aURI, int /*long*/[] _retval NS_OUTPARAM) {
+// return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 13, getAddress(), aURI, _retval NS_OUTPARAM);
+// }
+
+// public int RequestCapability(int /*long*/ principal, byte[] capability, int /*long*/ _retval NS_OUTPARAM) {
+// return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 14, getAddress(), principal, capability, _retval NS_OUTPARAM);
+// }
+
+// public int IsCapabilityEnabled(byte[] capability, int[] _retval NS_OUTPARAM) {
+// return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 15, getAddress(), capability, _retval NS_OUTPARAM);
+// }
+
+ public int EnableCapability(byte[] capability) {
+ return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 16, getAddress(), capability);
+ }
+
+ public int RevertCapability(byte[] capability) {
+ return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 17, getAddress(), capability);
+ }
+
+ public int DisableCapability(byte[] capability) {
+ return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 18, getAddress(), capability);
+ }
+
+// public int SetCanEnableCapability(int /*long*/ certificateFingerprint, byte[] capability, !ERROR UNKNOWN C TYPE <PRInt16 >! canEnable) {
+// return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 19, getAddress(), certificateFingerprint, capability, canEnable);
+// }
+
+// public int GetObjectPrincipal(int /*long*/ cx, int /*long*/ obj, int /*long*/[] _retval NS_OUTPARAM) {
+// return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 20, getAddress(), cx, obj, _retval NS_OUTPARAM);
+// }
+
+// public int SubjectPrincipalIsSystem(int[] _retval NS_OUTPARAM) {
+// return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 21, getAddress(), _retval NS_OUTPARAM);
+// }
+
+ public int CheckSameOrigin(int /*long*/ aJSContext, int /*long*/ aTargetURI) {
+ return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 22, getAddress(), aJSContext, aTargetURI);
+ }
+
+ public int CheckSameOriginURI(int /*long*/ aSourceURI, int /*long*/ aTargetURI, int reportError) {
+ return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 23, getAddress(), aSourceURI, aTargetURI, reportError);
+ }
+
+// public int GetPrincipalFromContext(int /*long*/ cx, int /*long*/[] _retval NS_OUTPARAM) {
+// return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 24, getAddress(), cx, _retval NS_OUTPARAM);
+// }
+
+// public int GetChannelPrincipal(int /*long*/ aChannel, int /*long*/[] _retval NS_OUTPARAM) {
+// return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 25, getAddress(), aChannel, _retval NS_OUTPARAM);
+// }
+
+// public int IsSystemPrincipal(int /*long*/ aPrincipal, int[] _retval NS_OUTPARAM) {
+// return XPCOM.VtblCall(nsIXPCSecurityManager.LAST_METHOD_ID + 26, getAddress(), aPrincipal, _retval NS_OUTPARAM);
+// }
+} \ No newline at end of file
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsISecurityCheckedComponent.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsISecurityCheckedComponent.java
new file mode 100644
index 0000000000..bc58ffae6d
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsISecurityCheckedComponent.java
@@ -0,0 +1,33 @@
+package org.eclipse.swt.internal.mozilla;
+
+
+public class nsISecurityCheckedComponent extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 4;
+
+ public static final String NS_ISECURITYCHECKEDCOMPONENT_IID_STR =
+ "0dad9e8c-a12d-4dcb-9a6f-7d09839356e1";
+
+ public static final nsID NS_ISECURITYCHECKEDCOMPONENT_IID =
+ new nsID(NS_ISECURITYCHECKEDCOMPONENT_IID_STR);
+
+ public nsISecurityCheckedComponent(int /*long*/ address) {
+ super(address);
+ }
+
+ public int CanCreateWrapper(int /*long*/ iid, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), iid, _retval);
+ }
+
+ public int CanCallMethod(int /*long*/ iid, char[] methodName, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), iid, methodName, _retval);
+ }
+
+ public int CanGetProperty(int /*long*/ iid, char[] propertyName, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), iid, propertyName, _retval);
+ }
+
+ public int CanSetProperty(int /*long*/ iid, char[] propertyName, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), iid, propertyName, _retval);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsISerializable.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsISerializable.java
new file mode 100644
index 0000000000..6e2fed1778
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsISerializable.java
@@ -0,0 +1,51 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2009 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsISerializable extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 2;
+
+ public static final String NS_ISERIALIZABLE_IID_STR =
+ "91cca981-c26d-44a8-bebe-d9ed4891503a";
+
+ public static final nsID NS_ISERIALIZABLE_IID =
+ new nsID(NS_ISERIALIZABLE_IID_STR);
+
+ public nsISerializable(int /*long*/ address) {
+ super(address);
+ }
+
+ public int Read(int /*long*/ aInputStream) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aInputStream);
+ }
+
+ public int Write(int /*long*/ aOutputStream) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), aOutputStream);
+ }
+} \ No newline at end of file
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIServiceManager.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIServiceManager.java
new file mode 100644
index 0000000000..2f46a6913f
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIServiceManager.java
@@ -0,0 +1,59 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIServiceManager extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 4;
+
+ public static final String NS_ISERVICEMANAGER_IID_STR =
+ "8bb35ed9-e332-462d-9155-4a002ab5c958";
+
+ public static final nsID NS_ISERVICEMANAGER_IID =
+ new nsID(NS_ISERVICEMANAGER_IID_STR);
+
+ public nsIServiceManager(int /*long*/ address) {
+ super(address);
+ }
+
+ public int GetService(nsID aClass, nsID aIID, int /*long*/[] result) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aClass, aIID, result);
+ }
+
+ public int GetServiceByContractID(byte[] aContractID, nsID aIID, int /*long*/[] result) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), aContractID, aIID, result);
+ }
+
+ public int IsServiceInstantiated(nsID aClass, nsID aIID, int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), aClass, aIID, _retval);
+ }
+
+ public int IsServiceInstantiatedByContractID(byte[] aContractID, nsID aIID, int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), aContractID, aIID, _retval);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsISimpleEnumerator.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsISimpleEnumerator.java
new file mode 100644
index 0000000000..9f29e75265
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsISimpleEnumerator.java
@@ -0,0 +1,51 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsISimpleEnumerator extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 2;
+
+ public static final String NS_ISIMPLEENUMERATOR_IID_STR =
+ "d1899240-f9d2-11d2-bdd6-000064657374";
+
+ public static final nsID NS_ISIMPLEENUMERATOR_IID =
+ new nsID(NS_ISIMPLEENUMERATOR_IID_STR);
+
+ public nsISimpleEnumerator(int /*long*/ address) {
+ super(address);
+ }
+
+ public int HasMoreElements(int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), _retval);
+ }
+
+ public int GetNext(int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), _retval);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsISupports.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsISupports.java
new file mode 100644
index 0000000000..e5d3d7cdf3
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsISupports.java
@@ -0,0 +1,68 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2005 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsISupports {
+
+ static final boolean IsSolaris;
+ static {
+ String osName = System.getProperty ("os.name").toLowerCase (); //$NON-NLS-1$
+ IsSolaris = osName.startsWith ("sunos") || osName.startsWith("solaris"); //$NON-NLS-1$
+ }
+
+ static final int FIRST_METHOD_ID = IsSolaris ? 2 : 0;
+ static final int LAST_METHOD_ID = FIRST_METHOD_ID + 2;
+
+ public static final String NS_ISUPPORTS_IID_STR =
+ "00000000-0000-0000-c000-000000000046";
+
+ public static final nsID NS_ISUPPORTS_IID =
+ new nsID(NS_ISUPPORTS_IID_STR);
+
+ int /*long*/ address;
+
+ public nsISupports(int /*long*/ address) {
+ this.address = address;
+ }
+
+ public int /*long*/ getAddress() {
+ return this.address;
+ }
+
+ public int QueryInterface(nsID uuid, int /*long*/[] result) {
+ return XPCOM.VtblCall(FIRST_METHOD_ID, getAddress(), uuid, result);
+ }
+
+ public int AddRef() {
+ return XPCOM.VtblCall(FIRST_METHOD_ID + 1, getAddress());
+ }
+
+ public int Release() {
+ return XPCOM.VtblCall(FIRST_METHOD_ID + 2, getAddress());
+ }
+} \ No newline at end of file
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsISupportsWeakReference.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsISupportsWeakReference.java
new file mode 100644
index 0000000000..3d346248de
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsISupportsWeakReference.java
@@ -0,0 +1,47 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2005 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsISupportsWeakReference extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 1;
+
+ public static final String NS_ISUPPORTSWEAKREFERENCE_IID_STR =
+ "9188bc86-f92e-11d2-81ef-0060083a0bcf";
+
+ public static final nsID NS_ISUPPORTSWEAKREFERENCE_IID =
+ new nsID(NS_ISUPPORTSWEAKREFERENCE_IID_STR);
+
+ public nsISupportsWeakReference(int /*long*/ address) {
+ super(address);
+ }
+
+ public int GetWeakReference(int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), _retval);
+ }
+} \ No newline at end of file
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsITooltipListener.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsITooltipListener.java
new file mode 100644
index 0000000000..e0c58a3797
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsITooltipListener.java
@@ -0,0 +1,51 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2004, 2005 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsITooltipListener extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 2;
+
+ public static final String NS_ITOOLTIPLISTENER_IID_STR =
+ "44b78386-1dd2-11b2-9ad2-e4eee2ca1916";
+
+ public static final nsID NS_ITOOLTIPLISTENER_IID =
+ new nsID(NS_ITOOLTIPLISTENER_IID_STR);
+
+ public nsITooltipListener(int /*long*/ address) {
+ super(address);
+ }
+
+ public int OnShowTooltip(int aXCoords, int aYCoords, char[] aTipText) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aXCoords, aYCoords, aTipText);
+ }
+
+ public int OnHideTooltip() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress());
+ }
+} \ No newline at end of file
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsITransfer.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsITransfer.java
new file mode 100644
index 0000000000..c9f0ba686d
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsITransfer.java
@@ -0,0 +1,47 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsITransfer extends nsIWebProgressListener2 {
+
+ static final int LAST_METHOD_ID = nsIWebProgressListener2.LAST_METHOD_ID + 1;
+
+ public static final String NS_ITRANSFER_IID_STR =
+ "23c51569-e9a1-4a92-adeb-3723db82ef7c";
+
+ public static final nsID NS_ITRANSFER_IID =
+ new nsID(NS_ITRANSFER_IID_STR);
+
+ public nsITransfer(int /*long*/ address) {
+ super(address);
+ }
+
+ public int Init(int /*long*/ aSource, int /*long*/ aTarget, int /*long*/ aDisplayName, int /*long*/ aMIMEInfo, long startTime, int /*long*/ aTempFile, int /*long*/ aCancelable) {
+ return XPCOM.VtblCall(nsIWebProgressListener2.LAST_METHOD_ID + 1, getAddress(), aSource, aTarget, aDisplayName, aMIMEInfo, startTime, aTempFile, aCancelable);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIURI.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIURI.java
new file mode 100644
index 0000000000..6c4bc12033
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIURI.java
@@ -0,0 +1,147 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIURI extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 26;
+
+ public static final String NS_IURI_IID_STR =
+ "07a22cc0-0ce5-11d3-9331-00104ba0fd40";
+
+ public static final nsID NS_IURI_IID =
+ new nsID(NS_IURI_IID_STR);
+
+ public nsIURI(int /*long*/ address) {
+ super(address);
+ }
+
+ public int GetSpec(int /*long*/ aSpec) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aSpec);
+ }
+
+ public int SetSpec(int /*long*/ aSpec) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), aSpec);
+ }
+
+ public int GetPrePath(int /*long*/ aPrePath) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), aPrePath);
+ }
+
+ public int GetScheme(int /*long*/ aScheme) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), aScheme);
+ }
+
+ public int SetScheme(int /*long*/ aScheme) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 5, getAddress(), aScheme);
+ }
+
+ public int GetUserPass(int /*long*/ aUserPass) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 6, getAddress(), aUserPass);
+ }
+
+ public int SetUserPass(int /*long*/ aUserPass) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 7, getAddress(), aUserPass);
+ }
+
+ public int GetUsername(int /*long*/ aUsername) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 8, getAddress(), aUsername);
+ }
+
+ public int SetUsername(int /*long*/ aUsername) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 9, getAddress(), aUsername);
+ }
+
+ public int GetPassword(int /*long*/ aPassword) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 10, getAddress(), aPassword);
+ }
+
+ public int SetPassword(int /*long*/ aPassword) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 11, getAddress(), aPassword);
+ }
+
+ public int GetHostPort(int /*long*/ aHostPort) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 12, getAddress(), aHostPort);
+ }
+
+ public int SetHostPort(int /*long*/ aHostPort) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 13, getAddress(), aHostPort);
+ }
+
+ public int GetHost(int /*long*/ aHost) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 14, getAddress(), aHost);
+ }
+
+ public int SetHost(int /*long*/ aHost) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 15, getAddress(), aHost);
+ }
+
+ public int GetPort(int[] aPort) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 16, getAddress(), aPort);
+ }
+
+ public int SetPort(int aPort) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 17, getAddress(), aPort);
+ }
+
+ public int GetPath(int /*long*/ aPath) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 18, getAddress(), aPath);
+ }
+
+ public int SetPath(int /*long*/ aPath) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 19, getAddress(), aPath);
+ }
+
+ public int Equals(int /*long*/ other, int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 20, getAddress(), other, _retval);
+ }
+
+ public int SchemeIs(byte[] scheme, int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 21, getAddress(), scheme, _retval);
+ }
+
+ public int Clone(int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 22, getAddress(), _retval);
+ }
+
+ public int Resolve(int /*long*/ relativePath, int /*long*/ _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 23, getAddress(), relativePath, _retval);
+ }
+
+ public int GetAsciiSpec(int /*long*/ aAsciiSpec) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 24, getAddress(), aAsciiSpec);
+ }
+
+ public int GetAsciiHost(int /*long*/ aAsciiHost) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 25, getAddress(), aAsciiHost);
+ }
+
+ public int GetOriginCharset(int /*long*/ aOriginCharset) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 26, getAddress(), aOriginCharset);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIURIContentListener.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIURIContentListener.java
new file mode 100644
index 0000000000..aa6378e315
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIURIContentListener.java
@@ -0,0 +1,75 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIURIContentListener extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 8;
+
+ public static final String NS_IURICONTENTLISTENER_IID_STR =
+ "94928ab3-8b63-11d3-989d-001083010e9b";
+
+ public static final nsID NS_IURICONTENTLISTENER_IID =
+ new nsID(NS_IURICONTENTLISTENER_IID_STR);
+
+ public nsIURIContentListener(int /*long*/ address) {
+ super(address);
+ }
+
+ public int OnStartURIOpen(int /*long*/ aURI, int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aURI, _retval);
+ }
+
+ public int DoContent(byte[] aContentType, int aIsContentPreferred, int /*long*/ aRequest, int /*long*/[] aContentHandler, int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), aContentType, aIsContentPreferred, aRequest, aContentHandler, _retval);
+ }
+
+ public int IsPreferred(byte[] aContentType, int /*long*/[] aDesiredContentType, int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), aContentType, aDesiredContentType, _retval);
+ }
+
+ public int CanHandleContent(byte[] aContentType, int aIsContentPreferred, int /*long*/[] aDesiredContentType, int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), aContentType, aIsContentPreferred, aDesiredContentType, _retval);
+ }
+
+ public int GetLoadCookie(int /*long*/[] aLoadCookie) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 5, getAddress(), aLoadCookie);
+ }
+
+ public int SetLoadCookie(int /*long*/ aLoadCookie) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 6, getAddress(), aLoadCookie);
+ }
+
+ public int GetParentContentListener(int /*long*/[] aParentContentListener) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 7, getAddress(), aParentContentListener);
+ }
+
+ public int SetParentContentListener(int /*long*/ aParentContentListener) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 8, getAddress(), aParentContentListener);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIVariant.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIVariant.java
new file mode 100644
index 0000000000..2de3baf3fc
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIVariant.java
@@ -0,0 +1,147 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIVariant extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 26;
+
+ public static final String NS_IVARIANT_IID_STR =
+ "6c9eb060-8c6a-11d5-90f3-0010a4e73d9a";
+
+ public static final nsID NS_IVARIANT_IID =
+ new nsID(NS_IVARIANT_IID_STR);
+
+ public nsIVariant(int /*long*/ address) {
+ super(address);
+ }
+
+ public int GetDataType(short[] aDataType) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aDataType);
+ }
+
+ public int GetAsInt8(int /*long*/ _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), _retval);
+ }
+
+ public int GetAsInt16(int /*long*/ _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), _retval);
+ }
+
+ public int GetAsInt32(int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), _retval);
+ }
+
+ public int GetAsInt64(long[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 5, getAddress(), _retval);
+ }
+
+ public int GetAsUint8(int /*long*/ _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 6, getAddress(), _retval);
+ }
+
+ public int GetAsUint16(short[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 7, getAddress(), _retval);
+ }
+
+ public int GetAsUint32(int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 8, getAddress(), _retval);
+ }
+
+ public int GetAsUint64(int /*long*/ _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 9, getAddress(), _retval);
+ }
+
+ public int GetAsFloat(float[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 10, getAddress(), _retval);
+ }
+
+ public int GetAsDouble(int /*long*/ _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 11, getAddress(), _retval);
+ }
+
+ public int GetAsBool(int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 12, getAddress(), _retval);
+ }
+
+ public int GetAsChar(byte[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 13, getAddress(), _retval);
+ }
+
+ public int GetAsWChar(char[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 14, getAddress(), _retval);
+ }
+
+ public int GetAsID(int /*long*/ retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 15, getAddress(), retval);
+ }
+
+ public int GetAsAString(int /*long*/ _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 16, getAddress(), _retval);
+ }
+
+ public int GetAsDOMString(int /*long*/ _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 17, getAddress(), _retval);
+ }
+
+ public int GetAsACString(int /*long*/ _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 18, getAddress(), _retval);
+ }
+
+ public int GetAsAUTF8String(int /*long*/ _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 19, getAddress(), _retval);
+ }
+
+ public int GetAsString(int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 20, getAddress(), _retval);
+ }
+
+ public int GetAsWString(int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 21, getAddress(), _retval);
+ }
+
+ public int GetAsISupports(int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 22, getAddress(), _retval);
+ }
+
+ public int GetAsInterface(int /*long*/[] iid, int /*long*/[] iface) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 23, getAddress(), iid, iface);
+ }
+
+ public int GetAsArray(short[] type, int /*long*/ iid, int[] count, int /*long*/[] ptr) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 24, getAddress(), type, iid, count, ptr);
+ }
+
+ public int GetAsStringWithSize(int[] size, int /*long*/[] str) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 25, getAddress(), size, str);
+ }
+
+ public int GetAsWStringWithSize(int[] size, int /*long*/[] str) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 26, getAddress(), size, str);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWeakReference.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWeakReference.java
new file mode 100644
index 0000000000..faf448bd94
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWeakReference.java
@@ -0,0 +1,47 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2005 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIWeakReference extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 1;
+
+ public static final String NS_IWEAKREFERENCE_IID_STR =
+ "9188bc85-f92e-11d2-81ef-0060083a0bcf";
+
+ public static final nsID NS_IWEAKREFERENCE_IID =
+ new nsID(NS_IWEAKREFERENCE_IID_STR);
+
+ public nsIWeakReference(int /*long*/ address) {
+ super(address);
+ }
+
+ public int QueryReferent(nsID uuid, int /*long*/[] result) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), uuid, result);
+ }
+} \ No newline at end of file
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebBrowser.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebBrowser.java
new file mode 100644
index 0000000000..22113bdafd
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebBrowser.java
@@ -0,0 +1,71 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2005 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIWebBrowser extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 7;
+
+ public static final String NS_IWEBBROWSER_IID_STR =
+ "69e5df00-7b8b-11d3-af61-00a024ffc08c";
+
+ public static final nsID NS_IWEBBROWSER_IID =
+ new nsID(NS_IWEBBROWSER_IID_STR);
+
+ public nsIWebBrowser(int /*long*/ address) {
+ super(address);
+ }
+
+ public int AddWebBrowserListener(int /*long*/ aListener, nsID aIID) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aListener, aIID);
+ }
+
+ public int RemoveWebBrowserListener(int /*long*/ aListener, nsID aIID) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), aListener, aIID);
+ }
+
+ public int GetContainerWindow(int /*long*/[] aContainerWindow) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), aContainerWindow);
+ }
+
+ public int SetContainerWindow(int /*long*/ aContainerWindow) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), aContainerWindow);
+ }
+
+ public int GetParentURIContentListener(int /*long*/[] aParentURIContentListener) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 5, getAddress(), aParentURIContentListener);
+ }
+
+ public int SetParentURIContentListener(int /*long*/ aParentURIContentListener) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 6, getAddress(), aParentURIContentListener);
+ }
+
+ public int GetContentDOMWindow(int /*long*/[] aContentDOMWindow) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 7, getAddress(), aContentDOMWindow);
+ }
+} \ No newline at end of file
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebBrowserChrome.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebBrowserChrome.java
new file mode 100644
index 0000000000..823c4a62d0
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebBrowserChrome.java
@@ -0,0 +1,137 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIWebBrowserChrome extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 10;
+
+ public static final String NS_IWEBBROWSERCHROME_IID_STR =
+ "ba434c60-9d52-11d3-afb0-00a024ffc08c";
+
+ public static final nsID NS_IWEBBROWSERCHROME_IID =
+ new nsID(NS_IWEBBROWSERCHROME_IID_STR);
+
+ public nsIWebBrowserChrome(int /*long*/ address) {
+ super(address);
+ }
+
+ public static final int STATUS_SCRIPT = 1;
+
+ public static final int STATUS_SCRIPT_DEFAULT = 2;
+
+ public static final int STATUS_LINK = 3;
+
+ public int SetStatus(int statusType, char[] status) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), statusType, status);
+ }
+
+ public int GetWebBrowser(int /*long*/[] aWebBrowser) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), aWebBrowser);
+ }
+
+ public int SetWebBrowser(int /*long*/ aWebBrowser) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), aWebBrowser);
+ }
+
+ public static final int CHROME_DEFAULT = 1;
+
+ public static final int CHROME_WINDOW_BORDERS = 2;
+
+ public static final int CHROME_WINDOW_CLOSE = 4;
+
+ public static final int CHROME_WINDOW_RESIZE = 8;
+
+ public static final int CHROME_MENUBAR = 16;
+
+ public static final int CHROME_TOOLBAR = 32;
+
+ public static final int CHROME_LOCATIONBAR = 64;
+
+ public static final int CHROME_STATUSBAR = 128;
+
+ public static final int CHROME_PERSONAL_TOOLBAR = 256;
+
+ public static final int CHROME_SCROLLBARS = 512;
+
+ public static final int CHROME_TITLEBAR = 1024;
+
+ public static final int CHROME_EXTRA = 2048;
+
+ public static final int CHROME_WITH_SIZE = 4096;
+
+ public static final int CHROME_WITH_POSITION = 8192;
+
+ public static final int CHROME_WINDOW_MIN = 16384;
+
+ public static final int CHROME_WINDOW_POPUP = 32768;
+
+ public static final int CHROME_WINDOW_RAISED = 33554432;
+
+ public static final int CHROME_WINDOW_LOWERED = 67108864;
+
+ public static final int CHROME_CENTER_SCREEN = 134217728;
+
+ public static final int CHROME_DEPENDENT = 268435456;
+
+ public static final int CHROME_MODAL = 536870912;
+
+ public static final int CHROME_OPENAS_DIALOG = 1073741824;
+
+ public static final int CHROME_OPENAS_CHROME = -2147483648;
+
+ public static final int CHROME_ALL = 4094;
+
+ public int GetChromeFlags(int[] aChromeFlags) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), aChromeFlags);
+ }
+
+ public int SetChromeFlags(int aChromeFlags) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 5, getAddress(), aChromeFlags);
+ }
+
+ public int DestroyBrowserWindow() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 6, getAddress());
+ }
+
+ public int SizeBrowserTo(int aCX, int aCY) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 7, getAddress(), aCX, aCY);
+ }
+
+ public int ShowAsModal() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 8, getAddress());
+ }
+
+ public int IsWindowModal(int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 9, getAddress(), _retval);
+ }
+
+ public int ExitModalEventLoop(int aStatus) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 10, getAddress(), aStatus);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebBrowserChromeFocus.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebBrowserChromeFocus.java
new file mode 100644
index 0000000000..6ad6792bf4
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebBrowserChromeFocus.java
@@ -0,0 +1,51 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2005 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIWebBrowserChromeFocus extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 2;
+
+ public static final String NS_IWEBBROWSERCHROMEFOCUS_IID_STR =
+ "d2206418-1dd1-11b2-8e55-acddcd2bcfb8";
+
+ public static final nsID NS_IWEBBROWSERCHROMEFOCUS_IID =
+ new nsID(NS_IWEBBROWSERCHROMEFOCUS_IID_STR);
+
+ public nsIWebBrowserChromeFocus(int /*long*/ address) {
+ super(address);
+ }
+
+ public int FocusNextElement() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress());
+ }
+
+ public int FocusPrevElement() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress());
+ }
+} \ No newline at end of file
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebBrowserFocus.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebBrowserFocus.java
new file mode 100644
index 0000000000..788f44ee6b
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebBrowserFocus.java
@@ -0,0 +1,75 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2005 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIWebBrowserFocus extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 8;
+
+ public static final String NS_IWEBBROWSERFOCUS_IID_STR =
+ "9c5d3c58-1dd1-11b2-a1c9-f3699284657a";
+
+ public static final nsID NS_IWEBBROWSERFOCUS_IID =
+ new nsID(NS_IWEBBROWSERFOCUS_IID_STR);
+
+ public nsIWebBrowserFocus(int /*long*/ address) {
+ super(address);
+ }
+
+ public int Activate() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress());
+ }
+
+ public int Deactivate() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress());
+ }
+
+ public int SetFocusAtFirstElement() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress());
+ }
+
+ public int SetFocusAtLastElement() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress());
+ }
+
+ public int GetFocusedWindow(int /*long*/[] aFocusedWindow) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 5, getAddress(), aFocusedWindow);
+ }
+
+ public int SetFocusedWindow(int /*long*/ aFocusedWindow) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 6, getAddress(), aFocusedWindow);
+ }
+
+ public int GetFocusedElement(int /*long*/[] aFocusedElement) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 7, getAddress(), aFocusedElement);
+ }
+
+ public int SetFocusedElement(int /*long*/ aFocusedElement) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 8, getAddress(), aFocusedElement);
+ }
+} \ No newline at end of file
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebBrowserSetup.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebBrowserSetup.java
new file mode 100644
index 0000000000..6ea241f427
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebBrowserSetup.java
@@ -0,0 +1,63 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIWebBrowserSetup extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 1;
+
+ public static final String NS_IWEBBROWSERSETUP_IID_STR =
+ "f15398a0-8018-11d3-af70-00a024ffc08c";
+
+ public static final nsID NS_IWEBBROWSERSETUP_IID =
+ new nsID(NS_IWEBBROWSERSETUP_IID_STR);
+
+ public nsIWebBrowserSetup(int /*long*/ address) {
+ super(address);
+ }
+
+ public static final int SETUP_ALLOW_PLUGINS = 1;
+
+ public static final int SETUP_ALLOW_JAVASCRIPT = 2;
+
+ public static final int SETUP_ALLOW_META_REDIRECTS = 3;
+
+ public static final int SETUP_ALLOW_SUBFRAMES = 4;
+
+ public static final int SETUP_ALLOW_IMAGES = 5;
+
+ public static final int SETUP_FOCUS_DOC_BEFORE_CONTENT = 6;
+
+ public static final int SETUP_USE_GLOBAL_HISTORY = 256;
+
+ public static final int SETUP_IS_CHROME_WRAPPER = 7;
+
+ public int SetProperty(int aId, int aValue) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aId, aValue);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebBrowserStream.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebBrowserStream.java
new file mode 100644
index 0000000000..740ab4c595
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebBrowserStream.java
@@ -0,0 +1,55 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2009 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIWebBrowserStream extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 3;
+
+ public static final String NS_IWEBBROWSERSTREAM_IID_STR =
+ "86d02f0e-219b-4cfc-9c88-bd98d2cce0b8";
+
+ public static final nsID NS_IWEBBROWSERSTREAM_IID =
+ new nsID(NS_IWEBBROWSERSTREAM_IID_STR);
+
+ public nsIWebBrowserStream(int /*long*/ address) {
+ super(address);
+ }
+
+ public int OpenStream(int /*long*/ aBaseURI, int /*long*/ aContentType) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aBaseURI, aContentType);
+ }
+
+ public int AppendToStream(int /*long*/ aData, int aLen) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), aData, aLen);
+ }
+
+ public int CloseStream() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress());
+ }
+} \ No newline at end of file
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebNavigation.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebNavigation.java
new file mode 100644
index 0000000000..24248d29eb
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebNavigation.java
@@ -0,0 +1,119 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIWebNavigation extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 13;
+
+ public static final String NS_IWEBNAVIGATION_IID_STR =
+ "f5d9e7b0-d930-11d3-b057-00a024ffc08c";
+
+ public static final nsID NS_IWEBNAVIGATION_IID =
+ new nsID(NS_IWEBNAVIGATION_IID_STR);
+
+ public nsIWebNavigation(int /*long*/ address) {
+ super(address);
+ }
+
+ public int GetCanGoBack(int[] aCanGoBack) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aCanGoBack);
+ }
+
+ public int GetCanGoForward(int[] aCanGoForward) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), aCanGoForward);
+ }
+
+ public int GoBack() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress());
+ }
+
+ public int GoForward() {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress());
+ }
+
+ public int GotoIndex(int index) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 5, getAddress(), index);
+ }
+
+ public static final int LOAD_FLAGS_MASK = 65535;
+
+ public static final int LOAD_FLAGS_NONE = 0;
+
+ public static final int LOAD_FLAGS_IS_REFRESH = 16;
+
+ public static final int LOAD_FLAGS_IS_LINK = 32;
+
+ public static final int LOAD_FLAGS_BYPASS_HISTORY = 64;
+
+ public static final int LOAD_FLAGS_REPLACE_HISTORY = 128;
+
+ public static final int LOAD_FLAGS_BYPASS_CACHE = 256;
+
+ public static final int LOAD_FLAGS_BYPASS_PROXY = 512;
+
+ public static final int LOAD_FLAGS_CHARSET_CHANGE = 1024;
+
+ public int LoadURI(char[] uri, int loadFlags, int /*long*/ referrer, int /*long*/ postData, int /*long*/ headers) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 6, getAddress(), uri, loadFlags, referrer, postData, headers);
+ }
+
+ public int Reload(int reloadFlags) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 7, getAddress(), reloadFlags);
+ }
+
+ public static final int STOP_NETWORK = 1;
+
+ public static final int STOP_CONTENT = 2;
+
+ public static final int STOP_ALL = 3;
+
+ public int Stop(int stopFlags) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 8, getAddress(), stopFlags);
+ }
+
+ public int GetDocument(int /*long*/[] aDocument) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 9, getAddress(), aDocument);
+ }
+
+ public int GetCurrentURI(int /*long*/[] aCurrentURI) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 10, getAddress(), aCurrentURI);
+ }
+
+ public int GetReferringURI(int /*long*/[] aReferringURI) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 11, getAddress(), aReferringURI);
+ }
+
+ public int GetSessionHistory(int /*long*/[] aSessionHistory) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 12, getAddress(), aSessionHistory);
+ }
+
+ public int SetSessionHistory(int /*long*/ aSessionHistory) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 13, getAddress(), aSessionHistory);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebNavigationInfo.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebNavigationInfo.java
new file mode 100644
index 0000000000..e6817fab08
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebNavigationInfo.java
@@ -0,0 +1,55 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2005 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIWebNavigationInfo extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 1;
+
+ public static final String NS_IWEBNAVIGATIONINFO_IID_STR =
+ "62a93afb-93a1-465c-84c8-0432264229de";
+
+ public static final nsID NS_IWEBNAVIGATIONINFO_IID =
+ new nsID(NS_IWEBNAVIGATIONINFO_IID_STR);
+
+ public nsIWebNavigationInfo(int /*long*/ address) {
+ super(address);
+ }
+
+ public static final int UNSUPPORTED = 0;
+
+ public static final int IMAGE = 1;
+
+ public static final int PLUGIN = 2;
+
+ public static final int OTHER = 32768;
+
+ public int IsTypeSupported(int /*long*/ aType, int /*long*/ aWebNav, int[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aType, aWebNav, _retval);
+ }
+} \ No newline at end of file
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebProgress.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebProgress.java
new file mode 100644
index 0000000000..05fd3516b8
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebProgress.java
@@ -0,0 +1,79 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIWebProgress extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 4;
+
+ public static final String NS_IWEBPROGRESS_IID_STR =
+ "570f39d0-efd0-11d3-b093-00a024ffc08c";
+
+ public static final nsID NS_IWEBPROGRESS_IID =
+ new nsID(NS_IWEBPROGRESS_IID_STR);
+
+ public nsIWebProgress(int /*long*/ address) {
+ super(address);
+ }
+
+ public static final int NOTIFY_STATE_REQUEST = 1;
+
+ public static final int NOTIFY_STATE_DOCUMENT = 2;
+
+ public static final int NOTIFY_STATE_NETWORK = 4;
+
+ public static final int NOTIFY_STATE_WINDOW = 8;
+
+ public static final int NOTIFY_STATE_ALL = 15;
+
+ public static final int NOTIFY_PROGRESS = 16;
+
+ public static final int NOTIFY_STATUS = 32;
+
+ public static final int NOTIFY_SECURITY = 64;
+
+ public static final int NOTIFY_LOCATION = 128;
+
+ public static final int NOTIFY_ALL = 255;
+
+ public int AddProgressListener(int /*long*/ listener, int aNotifyMask) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), listener, aNotifyMask);
+ }
+
+ public int RemoveProgressListener(int /*long*/ listener) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), listener);
+ }
+
+ public int GetDOMWindow(int /*long*/[] aDOMWindow) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), aDOMWindow);
+ }
+
+ public int GetIsLoadingDocument(int[] aIsLoadingDocument) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), aIsLoadingDocument);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebProgressListener.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebProgressListener.java
new file mode 100644
index 0000000000..2704c1bfe0
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebProgressListener.java
@@ -0,0 +1,93 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2005 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIWebProgressListener extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 5;
+
+ public static final String NS_IWEBPROGRESSLISTENER_IID_STR =
+ "570f39d1-efd0-11d3-b093-00a024ffc08c";
+
+ public static final nsID NS_IWEBPROGRESSLISTENER_IID =
+ new nsID(NS_IWEBPROGRESSLISTENER_IID_STR);
+
+ public nsIWebProgressListener(int /*long*/ address) {
+ super(address);
+ }
+
+ public static final int STATE_START = 1;
+
+ public static final int STATE_REDIRECTING = 2;
+
+ public static final int STATE_TRANSFERRING = 4;
+
+ public static final int STATE_NEGOTIATING = 8;
+
+ public static final int STATE_STOP = 16;
+
+ public static final int STATE_IS_REQUEST = 65536;
+
+ public static final int STATE_IS_DOCUMENT = 131072;
+
+ public static final int STATE_IS_NETWORK = 262144;
+
+ public static final int STATE_IS_WINDOW = 524288;
+
+ public static final int STATE_IS_INSECURE = 4;
+
+ public static final int STATE_IS_BROKEN = 1;
+
+ public static final int STATE_IS_SECURE = 2;
+
+ public static final int STATE_SECURE_HIGH = 262144;
+
+ public static final int STATE_SECURE_MED = 65536;
+
+ public static final int STATE_SECURE_LOW = 131072;
+
+ public int OnStateChange(int /*long*/ aWebProgress, int /*long*/ aRequest, int aStateFlags, int aStatus) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aWebProgress, aRequest, aStateFlags, aStatus);
+ }
+
+ public int OnProgressChange(int /*long*/ aWebProgress, int /*long*/ aRequest, int aCurSelfProgress, int aMaxSelfProgress, int aCurTotalProgress, int aMaxTotalProgress) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), aWebProgress, aRequest, aCurSelfProgress, aMaxSelfProgress, aCurTotalProgress, aMaxTotalProgress);
+ }
+
+ public int OnLocationChange(int /*long*/ aWebProgress, int /*long*/ aRequest, int /*long*/ location) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), aWebProgress, aRequest, location);
+ }
+
+ public int OnStatusChange(int /*long*/ aWebProgress, int /*long*/ aRequest, int aStatus, char[] aMessage) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), aWebProgress, aRequest, aStatus, aMessage);
+ }
+
+ public int OnSecurityChange(int /*long*/ aWebProgress, int /*long*/ aRequest, int state) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 5, getAddress(), aWebProgress, aRequest, state);
+ }
+} \ No newline at end of file
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebProgressListener2.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebProgressListener2.java
new file mode 100644
index 0000000000..d27f4863ff
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWebProgressListener2.java
@@ -0,0 +1,47 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIWebProgressListener2 extends nsIWebProgressListener {
+
+ static final int LAST_METHOD_ID = nsIWebProgressListener.LAST_METHOD_ID + 1;
+
+ public static final String NS_IWEBPROGRESSLISTENER2_IID_STR =
+ "3f24610d-1e1f-4151-9d2e-239884742324";
+
+ public static final nsID NS_IWEBPROGRESSLISTENER2_IID =
+ new nsID(NS_IWEBPROGRESSLISTENER2_IID_STR);
+
+ public nsIWebProgressListener2(int /*long*/ address) {
+ super(address);
+ }
+
+ public int OnProgressChange64(int /*long*/ aWebProgress, int /*long*/ aRequest, long aCurSelfProgress, long aMaxSelfProgress, long aCurTotalProgress, long aMaxTotalProgress) {
+ return XPCOM.VtblCall(nsIWebProgressListener.LAST_METHOD_ID + 1, getAddress(), aWebProgress, aRequest, aCurSelfProgress, aMaxSelfProgress, aCurTotalProgress, aMaxTotalProgress);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWindowCreator.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWindowCreator.java
new file mode 100644
index 0000000000..d7f5d7fb93
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWindowCreator.java
@@ -0,0 +1,47 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2005 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIWindowCreator extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 1;
+
+ public static final String NS_IWINDOWCREATOR_IID_STR =
+ "30465632-a777-44cc-90f9-8145475ef999";
+
+ public static final nsID NS_IWINDOWCREATOR_IID =
+ new nsID(NS_IWINDOWCREATOR_IID_STR);
+
+ public nsIWindowCreator(int /*long*/ address) {
+ super(address);
+ }
+
+ public int CreateChromeWindow(int /*long*/ parent, int chromeFlags, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), parent, chromeFlags, _retval);
+ }
+} \ No newline at end of file
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWindowCreator2.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWindowCreator2.java
new file mode 100644
index 0000000000..4bfec46ea4
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWindowCreator2.java
@@ -0,0 +1,49 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2008 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIWindowCreator2 extends nsIWindowCreator {
+
+ static final int LAST_METHOD_ID = nsIWindowCreator.LAST_METHOD_ID + 1;
+
+ public static final String NS_IWINDOWCREATOR2_IID_STR =
+ "f673ec81-a4b0-11d6-964b-eb5a2bf216fc";
+
+ public static final nsID NS_IWINDOWCREATOR2_IID =
+ new nsID(NS_IWINDOWCREATOR2_IID_STR);
+
+ public nsIWindowCreator2(int /*long*/ address) {
+ super(address);
+ }
+
+ public static final int PARENT_IS_LOADING_OR_RUNNING_TIMEOUT = 1;
+
+ public int CreateChromeWindow2(int /*long*/ parent, int chromeFlags, int contextFlags, int /*long*/ uri, int[] cancel, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsIWindowCreator.LAST_METHOD_ID + 1, getAddress(), parent, chromeFlags, contextFlags, uri, cancel, _retval);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWindowWatcher.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWindowWatcher.java
new file mode 100644
index 0000000000..6a1fc590b2
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWindowWatcher.java
@@ -0,0 +1,87 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2005 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIWindowWatcher extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 11;
+
+ public static final String NS_IWINDOWWATCHER_IID_STR =
+ "002286a8-494b-43b3-8ddd-49e3fc50622b";
+
+ public static final nsID NS_IWINDOWWATCHER_IID =
+ new nsID(NS_IWINDOWWATCHER_IID_STR);
+
+ public nsIWindowWatcher(int /*long*/ address) {
+ super(address);
+ }
+
+ public int OpenWindow(int /*long*/ aParent, byte[] aUrl, byte[] aName, byte[] aFeatures, int /*long*/ aArguments, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aParent, aUrl, aName, aFeatures, aArguments, _retval);
+ }
+
+ public int RegisterNotification(int /*long*/ aObserver) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), aObserver);
+ }
+
+ public int UnregisterNotification(int /*long*/ aObserver) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), aObserver);
+ }
+
+ public int GetWindowEnumerator(int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), _retval);
+ }
+
+ public int GetNewPrompter(int /*long*/ aParent, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 5, getAddress(), aParent, _retval);
+ }
+
+ public int GetNewAuthPrompter(int /*long*/ aParent, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 6, getAddress(), aParent, _retval);
+ }
+
+ public int SetWindowCreator(int /*long*/ creator) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 7, getAddress(), creator);
+ }
+
+ public int GetChromeForWindow(int /*long*/ aWindow, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 8, getAddress(), aWindow, _retval);
+ }
+
+ public int GetWindowByName(char[] aTargetName, int /*long*/ aCurrentWindow, int /*long*/[] _retval) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 9, getAddress(), aTargetName, aCurrentWindow, _retval);
+ }
+
+ public int GetActiveWindow(int /*long*/[] aActiveWindow) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 10, getAddress(), aActiveWindow);
+ }
+
+ public int SetActiveWindow(int /*long*/ aActiveWindow) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 11, getAddress(), aActiveWindow);
+ }
+} \ No newline at end of file
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWritableVariant.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWritableVariant.java
new file mode 100644
index 0000000000..30b340c4d4
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIWritableVariant.java
@@ -0,0 +1,141 @@
+package org.eclipse.swt.internal.mozilla;
+
+
+public class nsIWritableVariant extends nsIVariant {
+
+ static final int LAST_METHOD_ID = nsIVariant.LAST_METHOD_ID + 31;
+
+ public static final String NS_IWRITABLEVARIANT_IID_STR =
+ "5586a590-8c82-11d5-90f3-0010a4e73d9a";
+
+ public static final nsID NS_IWRITABLEVARIANT_IID =
+ new nsID(NS_IWRITABLEVARIANT_IID_STR);
+
+ public nsIWritableVariant(int /*long*/ address) {
+ super(address);
+ }
+
+ public int GetWritable(int[] aWritable) {
+ return XPCOM.VtblCall(nsIVariant.LAST_METHOD_ID + 1, getAddress(), aWritable);
+ }
+
+ public int SetWritable(int aWritable) {
+ return XPCOM.VtblCall(nsIVariant.LAST_METHOD_ID + 2, getAddress(), aWritable);
+ }
+
+// public int SetAsInt8(!ERROR UNKNOWN C TYPE <PRUint8 >! aValue) {
+// return XPCOM.VtblCall(nsIVariant.LAST_METHOD_ID + 3, getAddress(), aValue);
+// }
+//
+// public int SetAsInt16(!ERROR UNKNOWN C TYPE <PRInt16 >! aValue) {
+// return XPCOM.VtblCall(nsIVariant.LAST_METHOD_ID + 4, getAddress(), aValue);
+// }
+
+ public int SetAsInt32(int aValue) {
+ return XPCOM.VtblCall(nsIVariant.LAST_METHOD_ID + 5, getAddress(), aValue);
+ }
+
+ public int SetAsInt64(long aValue) {
+ return XPCOM.VtblCall(nsIVariant.LAST_METHOD_ID + 6, getAddress(), aValue);
+ }
+
+// public int SetAsUint8(!ERROR UNKNOWN C TYPE <PRUint8 >! aValue) {
+// return XPCOM.VtblCall(nsIVariant.LAST_METHOD_ID + 7, getAddress(), aValue);
+// }
+
+ public int SetAsUint16(short aValue) {
+ return XPCOM.VtblCall(nsIVariant.LAST_METHOD_ID + 8, getAddress(), aValue);
+ }
+
+ public int SetAsUint32(int aValue) {
+ return XPCOM.VtblCall(nsIVariant.LAST_METHOD_ID + 9, getAddress(), aValue);
+ }
+
+// public int SetAsUint64(!ERROR UNKNOWN C TYPE <PRUint64 >! aValue) {
+// return XPCOM.VtblCall(nsIVariant.LAST_METHOD_ID + 10, getAddress(), aValue);
+// }
+
+ public int SetAsFloat(float aValue) {
+ return XPCOM.VtblCall(nsIVariant.LAST_METHOD_ID + 11, getAddress(), aValue);
+ }
+
+ public int SetAsDouble(double aValue) {
+ return XPCOM.VtblCall(nsIVariant.LAST_METHOD_ID + 12, getAddress(), aValue);
+ }
+
+ public int SetAsBool(int aValue) {
+ return XPCOM.VtblCall(nsIVariant.LAST_METHOD_ID + 13, getAddress(), aValue);
+ }
+
+// public int SetAsChar(!ERROR UNKNOWN C TYPE <char >! aValue) {
+// return XPCOM.VtblCall(nsIVariant.LAST_METHOD_ID + 14, getAddress(), aValue);
+// }
+//
+// public int SetAsWChar(!ERROR UNKNOWN C TYPE <PRUnichar >! aValue) {
+// return XPCOM.VtblCall(nsIVariant.LAST_METHOD_ID + 15, getAddress(), aValue);
+// }
+
+ public int SetAsID(int /*long*/ aValue) {
+ return XPCOM.VtblCall(nsIVariant.LAST_METHOD_ID + 16, getAddress(), aValue);
+ }
+
+ public int SetAsAString(int /*long*/ aValue) {
+ return XPCOM.VtblCall(nsIVariant.LAST_METHOD_ID + 17, getAddress(), aValue);
+ }
+
+ public int SetAsDOMString(int /*long*/ aValue) {
+ return XPCOM.VtblCall(nsIVariant.LAST_METHOD_ID + 18, getAddress(), aValue);
+ }
+
+ public int SetAsACString(int /*long*/ aValue) {
+ return XPCOM.VtblCall(nsIVariant.LAST_METHOD_ID + 19, getAddress(), aValue);
+ }
+
+ public int SetAsAUTF8String(int /*long*/ aValue) {
+ return XPCOM.VtblCall(nsIVariant.LAST_METHOD_ID + 20, getAddress(), aValue);
+ }
+
+ public int SetAsString(byte[] aValue) {
+ return XPCOM.VtblCall(nsIVariant.LAST_METHOD_ID + 21, getAddress(), aValue);
+ }
+
+ public int SetAsWString(char[] aValue) {
+ return XPCOM.VtblCall(nsIVariant.LAST_METHOD_ID + 22, getAddress(), aValue);
+ }
+
+ public int SetAsISupports(int /*long*/ aValue) {
+ return XPCOM.VtblCall(nsIVariant.LAST_METHOD_ID + 23, getAddress(), aValue);
+ }
+
+ public int SetAsInterface(nsID iid, int /*long*/ iface) {
+ return XPCOM.VtblCall(nsIVariant.LAST_METHOD_ID + 24, getAddress(), iid, iface);
+ }
+
+ public int SetAsArray(short type, int /*long*/ iid, int count, int /*long*/ ptr) {
+ return XPCOM.VtblCall(nsIVariant.LAST_METHOD_ID + 25, getAddress(), type, iid, count, ptr);
+ }
+
+ public int SetAsStringWithSize(int size, byte[] str) {
+ return XPCOM.VtblCall(nsIVariant.LAST_METHOD_ID + 26, getAddress(), size, str);
+ }
+
+ public int SetAsWStringWithSize(int size, char[] str) {
+ return XPCOM.VtblCall(nsIVariant.LAST_METHOD_ID + 27, getAddress(), size, str);
+ }
+
+ public int SetAsVoid() {
+ return XPCOM.VtblCall(nsIVariant.LAST_METHOD_ID + 28, getAddress());
+ }
+
+ public int SetAsEmpty() {
+ return XPCOM.VtblCall(nsIVariant.LAST_METHOD_ID + 29, getAddress());
+ }
+
+ public int SetAsEmptyArray() {
+ return XPCOM.VtblCall(nsIVariant.LAST_METHOD_ID + 30, getAddress());
+ }
+
+ public int SetFromVariant(int /*long*/ aValue) {
+ return XPCOM.VtblCall(nsIVariant.LAST_METHOD_ID + 31, getAddress(), aValue);
+ }
+}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIXPCSecurityManager.java b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIXPCSecurityManager.java
new file mode 100644
index 0000000000..884b6d986a
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/nsIXPCSecurityManager.java
@@ -0,0 +1,79 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla Communicator client code, released March 31, 1998.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by Netscape are Copyright (C) 1998-1999
+ * Netscape Communications Corporation. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * IBM
+ * - Binding to permit interfacing between Mozilla and SWT
+ * - Copyright (C) 2003, 2009 IBM Corp. All Rights Reserved.
+ *
+ * ***** END LICENSE BLOCK ***** */
+package org.eclipse.swt.internal.mozilla;
+
+public class nsIXPCSecurityManager extends nsISupports {
+
+ static final int LAST_METHOD_ID = nsISupports.LAST_METHOD_ID + 4;
+
+ public static final String NS_IXPCSECURITYMANAGER_IID_STR =
+ "31431440-f1ce-11d2-985a-006008962422";
+
+ public static final nsID NS_IXPCSECURITYMANAGER_IID =
+ new nsID(NS_IXPCSECURITYMANAGER_IID_STR);
+
+ public nsIXPCSecurityManager(int /*long*/ address) {
+ super(address);
+ }
+
+ public static final int HOOK_CREATE_WRAPPER = 1;
+
+ public static final int HOOK_CREATE_INSTANCE = 2;
+
+ public static final int HOOK_GET_SERVICE = 4;
+
+ public static final int HOOK_CALL_METHOD = 8;
+
+ public static final int HOOK_GET_PROPERTY = 16;
+
+ public static final int HOOK_SET_PROPERTY = 32;
+
+ public static final int HOOK_ALL = 63;
+
+ public int CanCreateWrapper(int /*long*/ aJSContext, nsID aIID, int /*long*/ aObj, int /*long*/ aClassInfo, int /*long*/[] aPolicy) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 1, getAddress(), aJSContext, aIID, aObj, aClassInfo, aPolicy);
+ }
+
+ public int CanCreateInstance(int /*long*/ aJSContext, nsID aCID) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 2, getAddress(), aJSContext, aCID);
+ }
+
+ public int CanGetService(int /*long*/ aJSContext, nsID aCID) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 3, getAddress(), aJSContext, aCID);
+ }
+
+ public static final int ACCESS_CALL_METHOD = 0;
+
+ public static final int ACCESS_GET_PROPERTY = 1;
+
+ public static final int ACCESS_SET_PROPERTY = 2;
+
+ public int CanAccess(int aAction, int /*long*/ aCallContext, int /*long*/ aJSContext, int /*long*/ aJSObject, int /*long*/ aObj, int /*long*/ aClassInfo, int /*long*/ aName, int /*long*/[] aPolicy) {
+ return XPCOM.VtblCall(nsISupports.LAST_METHOD_ID + 4, getAddress(), aAction, aCallContext, aJSContext, aJSObject, aObj, aClassInfo, aName, aPolicy);
+ }
+} \ No newline at end of file
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/package.html b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/package.html
new file mode 100644
index 0000000000..0458804fc3
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT Mozilla/common/org/eclipse/swt/internal/mozilla/package.html
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="IBM">
+ <title>Package-level Javadoc</title>
+</head>
+<body>
+SWT internal Mozilla XPCOM implementation classes.
+<h2>
+Package Specification</h2>
+This package contains the classes which represent the Mozilla
+XPCOM platform interfaces that the SWT Mozilla Browser is built from.
+<p>
+Referencing any of the classes in this package directly guarantees
+that the code is platform specific. Applications should not need to
+reference the classes in this package directly.
+</p>
+</body>
+</html>