Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian de Alwis2016-01-21 17:59:47 +0000
committerBrian de Alwis2016-01-21 18:16:21 +0000
commita5c2de2fb78071d24a77b1ffc7c945cd095a08ee (patch)
tree653a54897e44c5e5faffdcc19189e646edc6e418
parent44ee838c665231988f64a80bc5a372526a85d650 (diff)
downloadeclipse.platform.ui-a5c2de2fb78071d24a77b1ffc7c945cd095a08ee.tar.gz
eclipse.platform.ui-a5c2de2fb78071d24a77b1ffc7c945cd095a08ee.tar.xz
eclipse.platform.ui-a5c2de2fb78071d24a77b1ffc7c945cd095a08ee.zip
Bug 475775 - ExternalBrowserInstance now test for the return value which is for us 1 for Internet Explorer
Only test the process exit-value when using a launcher as on OS X. Move process-waiting code up to avoid spurious NPE when an exception occurs during browser launch. Change-Id: I6cc6d5c7f131dca29c5493bb0462a4fb37f0994c
-rw-r--r--bundles/org.eclipse.ui.browser/src/org/eclipse/ui/internal/browser/ExternalBrowserInstance.java46
1 files changed, 28 insertions, 18 deletions
diff --git a/bundles/org.eclipse.ui.browser/src/org/eclipse/ui/internal/browser/ExternalBrowserInstance.java b/bundles/org.eclipse.ui.browser/src/org/eclipse/ui/internal/browser/ExternalBrowserInstance.java
index 41e4c95ea1a..5cd5376a285 100644
--- a/bundles/org.eclipse.ui.browser/src/org/eclipse/ui/internal/browser/ExternalBrowserInstance.java
+++ b/bundles/org.eclipse.ui.browser/src/org/eclipse/ui/internal/browser/ExternalBrowserInstance.java
@@ -44,6 +44,14 @@ public class ExternalBrowserInstance extends AbstractWebBrowser {
String location = browser.getLocation();
cmdOptions.add(location);
String parameters = browser.getParameters();
+
+ /**
+ * If true, then report non-zero exit values. Primarily useful when
+ * using a launcher, like OS X's open(1), as some browsers (like IE)
+ * routinely return non-zero values (bug 475775).
+ */
+ final boolean reportNonZeroExitValue[] = new boolean[] { false };
+
Trace
.trace(
Trace.FINEST,
@@ -75,6 +83,7 @@ public class ExternalBrowserInstance extends AbstractWebBrowser {
if (params.length > 0) {
cmdOptions.add("--args");//$NON-NLS-1$
}
+ reportNonZeroExitValue[0] = true;
}
for (String param : params) {
@@ -90,29 +99,30 @@ public class ExternalBrowserInstance extends AbstractWebBrowser {
Thread errConsumer = new StreamConsumer(process.getErrorStream());
errConsumer.setName("External browser error reader"); //$NON-NLS-1$
errConsumer.start();
+
+ Thread thread = new Thread() {
+ @Override
+ public void run() {
+ try {
+ process.waitFor();
+ if (reportNonZeroExitValue[0] && process.exitValue() != 0) {
+ Trace.trace(Trace.SEVERE,
+ "External browser returned non-zero status: " + process.exitValue()); //$NON-NLS-1$
+ WebBrowserUtil.openError(NLS.bind(Messages.errorCouldNotLaunchWebBrowser, urlText));
+ }
+ DefaultBrowserSupport.getInstance().removeBrowser(ExternalBrowserInstance.this);
+ } catch (Exception e) {
+ // ignore
+ }
+ }
+ };
+ thread.setDaemon(true);
+ thread.start();
} catch (Exception e) {
Trace.trace(Trace.SEVERE, "Could not launch external browser", e); //$NON-NLS-1$
WebBrowserUtil.openError(NLS.bind(
Messages.errorCouldNotLaunchWebBrowser, urlText));
}
- Thread thread = new Thread() {
- @Override
- public void run() {
- try {
- process.waitFor();
- if (process.exitValue() != 0) {
- Trace.trace(Trace.SEVERE, "Could not launch external browser"); //$NON-NLS-1$
- WebBrowserUtil.openError(NLS.bind(Messages.errorCouldNotLaunchWebBrowser, urlText));
- }
- DefaultBrowserSupport.getInstance().removeBrowser(
- ExternalBrowserInstance.this);
- } catch (Exception e) {
- // ignore
- }
- }
- };
- thread.setDaemon(true);
- thread.start();
}
/**

Back to the top