diff --git a/bundles/org.eclipse.ui.browser/META-INF/MANIFEST.MF b/bundles/org.eclipse.ui.browser/META-INF/MANIFEST.MF
index b44ece3..fbddd02 100644
--- a/bundles/org.eclipse.ui.browser/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.ui.browser/META-INF/MANIFEST.MF
@@ -11,7 +11,8 @@
  org.eclipse.ui.internal.browser.browsers;x-internal:=true,
  org.eclipse.ui.internal.browser.macosx;x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.11.0,4.0.0)",
- org.eclipse.ui;bundle-version="[3.6.0,4.0.0)"
+ org.eclipse.ui;bundle-version="[3.6.0,4.0.0)",
+ org.eclipse.urischeme;bundle-version="1.1.0"
 Eclipse-LazyStart: true
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Bundle-ActivationPolicy: lazy
diff --git a/bundles/org.eclipse.ui.browser/src/org/eclipse/ui/internal/browser/BrowserViewer.java b/bundles/org.eclipse.ui.browser/src/org/eclipse/ui/internal/browser/BrowserViewer.java
index d68a550..a4e88d7 100644
--- a/bundles/org.eclipse.ui.browser/src/org/eclipse/ui/internal/browser/BrowserViewer.java
+++ b/bundles/org.eclipse.ui.browser/src/org/eclipse/ui/internal/browser/BrowserViewer.java
@@ -19,6 +19,7 @@
 import java.beans.PropertyChangeListener;
 import java.io.File;
 import java.io.IOException;
+import java.net.URI;
 import java.nio.file.ClosedWatchServiceException;
 import java.nio.file.FileSystems;
 import java.nio.file.Path;
@@ -29,6 +30,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jface.action.IStatusLineManager;
 import org.eclipse.jface.resource.ImageDescriptor;
@@ -60,6 +62,7 @@
 import org.eclipse.swt.widgets.ToolBar;
 import org.eclipse.swt.widgets.ToolItem;
 import org.eclipse.ui.PlatformUI;
+import org.eclipse.urischeme.IUriSchemeProcessor;
 
 /**
  * A Web browser widget. It extends the Eclipse SWT Browser widget by adding an
@@ -233,6 +236,20 @@
 		//if (WebBrowserUtil.canUseInternalWebBrowser())
 		try {
 			this.browser = new Browser(this, SWT.NONE);
+			this.browser.addLocationListener(LocationListener.changingAdapter(event -> {
+					URI uri = URI.create(event.location);
+					if (!(uri.getScheme().equals("http") || uri.getScheme().equals("https") //$NON-NLS-1$ //$NON-NLS-2$
+							|| uri.getScheme().equals("file"))) //$NON-NLS-1$
+						try {
+							if (IUriSchemeProcessor.INSTANCE.canHandle(uri)) {
+								IUriSchemeProcessor.INSTANCE.handleUri(uri);
+								event.doit = false;
+							}
+						} catch (CoreException e) {
+							WebBrowserUIPlugin.logError(e.getMessage(), e);
+						}
+
+				}));
 		}
 		catch (SWTError e) {
 			if (e.code!=SWT.ERROR_NO_HANDLES) {
@@ -688,8 +705,9 @@
 		else if ("wtp".equalsIgnoreCase(url)) //$NON-NLS-1$
 			url = "http://www.eclipse.org/webtools/"; //$NON-NLS-1$
 
-		if (browse)
+		if (browse) {
 			navigate(url);
+		}
 
 		addToHistory(url);
 		updateHistory();
diff --git a/bundles/org.eclipse.urischeme/META-INF/MANIFEST.MF b/bundles/org.eclipse.urischeme/META-INF/MANIFEST.MF
index 4a94927..0e5f119 100644
--- a/bundles/org.eclipse.urischeme/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.urischeme/META-INF/MANIFEST.MF
@@ -2,12 +2,12 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %Plugin.name
 Bundle-SymbolicName: org.eclipse.urischeme;singleton:=true
-Bundle-Version: 1.0.800.qualifier
+Bundle-Version: 1.1.0.qualifier
 Automatic-Module-Name: org.eclipse.urischeme
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Require-Bundle: org.eclipse.equinox.common;bundle-version="[3.8.0,4.0.0)",
  org.eclipse.equinox.registry;bundle-version="[3.8.0,4.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.14.0,4.0.0)"
-Export-Package: org.eclipse.urischeme;x-friends:="org.eclipse.ui.ide.application,org.eclipse.ui.examples.uriSchemeHandler"
+Export-Package: org.eclipse.urischeme;x-friends:="org.eclipse.ui.ide.application,org.eclipse.ui.examples.uriSchemeHandler,org.eclipse.ui.browser"
 Bundle-Vendor: %Plugin.Providername
 Bundle-Localization: plugin
diff --git a/bundles/org.eclipse.urischeme/src/org/eclipse/urischeme/IUriSchemeProcessor.java b/bundles/org.eclipse.urischeme/src/org/eclipse/urischeme/IUriSchemeProcessor.java
index 707cbe0..7d8e6e2 100644
--- a/bundles/org.eclipse.urischeme/src/org/eclipse/urischeme/IUriSchemeProcessor.java
+++ b/bundles/org.eclipse.urischeme/src/org/eclipse/urischeme/IUriSchemeProcessor.java
@@ -13,6 +13,8 @@
  *******************************************************************************/
 package org.eclipse.urischeme;
 
+import java.net.URI;
+
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.urischeme.internal.UriSchemeProcessor;
 
@@ -35,4 +37,24 @@
 	 * @throws CoreException if URI handling failed; implementation dependent
 	 */
 	void handleUri(String uriScheme, String uri) throws CoreException;
+
+	/**
+	 * Handle an URI with the given uriScheme
+	 *
+	 * @param uri the complete URI
+	 * @throws CoreException if URI handling failed; implementation dependent
+	 * @since 1.1
+	 */
+	default void handleUri(URI uri) throws CoreException {
+		handleUri(uri.getScheme(), uri.toString());
+	}
+
+	/**
+	 * Return whether a handler can process the given URI, according to its scheme.
+	 *
+	 * @param uri
+	 * @return whether a handler can process the given URI, according to its scheme.
+	 * @since 1.1
+	 */
+	boolean canHandle(URI uri);
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.urischeme/src/org/eclipse/urischeme/internal/UriSchemeProcessor.java b/bundles/org.eclipse.urischeme/src/org/eclipse/urischeme/internal/UriSchemeProcessor.java
index 639e72e..77fe0b8 100644
--- a/bundles/org.eclipse.urischeme/src/org/eclipse/urischeme/internal/UriSchemeProcessor.java
+++ b/bundles/org.eclipse.urischeme/src/org/eclipse/urischeme/internal/UriSchemeProcessor.java
@@ -13,6 +13,7 @@
  *******************************************************************************/
 package org.eclipse.urischeme.internal;
 
+import java.net.URI;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -44,14 +45,29 @@
 	public void handleUri(String uriScheme, String uri) throws CoreException {
 		IUriSchemeHandler handler = null;
 
+		handler = getHandler(uriScheme);
+		if (handler != null) {
+			handler.handle(uri);
+		}
+	}
+
+	private IUriSchemeHandler getHandler(String uriScheme) throws CoreException {
+		IUriSchemeHandler handler;
 		if (createdHandlers.containsKey(uriScheme)) {
 			handler = createdHandlers.get(uriScheme);
 		} else {
 			handler = reader.getHandlerFromExtensionPoint(uriScheme);
 			createdHandlers.put(uriScheme, handler);
 		}
-		if (handler != null) {
-			handler.handle(uri);
+		return handler;
+	}
+
+	@Override
+	public boolean canHandle(URI uri) {
+		try {
+			return getHandler(uri.getScheme()) != null;
+		} catch (CoreException e) {
+			return false;
 		}
 	}
 
