Bug 559747 - Internal browser with "auto-refresh..." leaks `inotify`

Change-Id: Ia69a471ee41ab8457295e5e3b85c16896103ac23
Signed-off-by: Mickael Istria <mistria@redhat.com>
Signed-off-by: Stephan Wahlbrink <sw@wahlbrink.eu>
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 da65e36..e3382a4 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
@@ -46,6 +46,7 @@
 import org.eclipse.swt.browser.VisibilityWindowAdapter;
 import org.eclipse.swt.browser.WindowEvent;
 import org.eclipse.swt.dnd.Clipboard;
+import org.eclipse.swt.events.DisposeEvent;
 import org.eclipse.swt.events.MouseAdapter;
 import org.eclipse.swt.events.MouseEvent;
 import org.eclipse.swt.events.SelectionListener;
@@ -273,7 +274,7 @@
 			text.getControl().setLayoutData(new GridData(GridData.FILL_BOTH));
 
 		addBrowserListeners();
-		//listen();
+		addDisposeListener(this::dispose);
 	}
 
 	/**
@@ -741,10 +742,7 @@
 	/**
 	 *
 	 */
-	@Override
-	public void dispose() {
-		super.dispose();
-
+	private void dispose(DisposeEvent event) {
 		showToolbar = false;
 
 		if (busy != null)
@@ -757,6 +755,15 @@
 			clipboard.dispose();
 		clipboard=null;
 
+		if (watcher != null) {
+			try {
+				watcher.close();
+			} catch (IOException e) {
+				WebBrowserUIPlugin.logError(e.getMessage(), e);
+			}
+		}
+		watcher = null;
+
 		removeSynchronizationListener();
 	}