Bug 409701 - [Browser] Eclipse help crashes when forced to use XULRunner
or WebKit
diff --git a/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/browser/embedded/EmbeddedBrowserAdapter.java b/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/browser/embedded/EmbeddedBrowserAdapter.java
index 7c00492..6355768 100644
--- a/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/browser/embedded/EmbeddedBrowserAdapter.java
+++ b/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/browser/embedded/EmbeddedBrowserAdapter.java
@@ -23,6 +23,7 @@
 	private EmbeddedBrowser browser;
 	// Thread to use in workbench mode on Windows
 	private UIThread2 secondThread;
+	private String browserType;
 	class UIThread2 extends Thread {
 		
 		Display d;
@@ -60,12 +61,15 @@
 	/**
 	 * Adapter constructor.
 	 */
-	public EmbeddedBrowserAdapter() {
+	public EmbeddedBrowserAdapter(String browserType) {
+		this.browserType = browserType;
 	}
 	public Display getBrowserDisplay() {
+		/* only attempt to use a second thread if the Browser's native renderer is IE */
 		boolean useUIThread2 = BaseHelpSystem.getMode() == BaseHelpSystem.MODE_WORKBENCH
 				&& Constants.OS_WIN32.equalsIgnoreCase(Platform.getOS())
-		        && !Constants.WS_WPF.equalsIgnoreCase(SWT.getPlatform()) ;
+		        && !Constants.WS_WPF.equalsIgnoreCase(SWT.getPlatform())
+		        && "ie".equalsIgnoreCase(browserType); //$NON-NLS-1$
 		if (useUIThread2) {
 			if (secondThread == null) {
 				secondThread = new UIThread2();
diff --git a/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/browser/embedded/EmbeddedBrowserFactory.java b/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/browser/embedded/EmbeddedBrowserFactory.java
index e604caa..dec7f54 100644
--- a/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/browser/embedded/EmbeddedBrowserFactory.java
+++ b/org.eclipse.help.ui/src/org/eclipse/help/ui/internal/browser/embedded/EmbeddedBrowserFactory.java
@@ -25,6 +25,7 @@
 	private boolean tested = false;
 
 	private boolean available = false;
+	private String browserType;
 
 	/**
 	 * Constructor.
@@ -70,7 +71,8 @@
 			tested = true;
 			Shell sh = new Shell();
 			try {
-				new Browser(sh, SWT.NONE);
+				Browser browser = new Browser(sh, SWT.NONE);
+				browserType = browser.getBrowserType();
 				available = true;
 			} catch (SWTError se) {
 				if (se.code == SWT.ERROR_NO_HANDLES) {
@@ -94,6 +96,6 @@
 	 * @see IBrowserFactory#createBrowser()
 	 */
 	public IBrowser createBrowser() {
-		return new EmbeddedBrowserAdapter();
+		return new EmbeddedBrowserAdapter(browserType);
 	}
 }