Bug 289478 -  Provide script load breakpoints
diff --git a/bundles/org.eclipse.e4.languages.javascript.debug.model/src/org/eclipse/e4/languages/javascript/debug/model/JSDIScriptLoadBreakpoint.java b/bundles/org.eclipse.e4.languages.javascript.debug.model/src/org/eclipse/e4/languages/javascript/debug/model/JSDIScriptLoadBreakpoint.java
index 73bfad7..a8a4b38 100644
--- a/bundles/org.eclipse.e4.languages.javascript.debug.model/src/org/eclipse/e4/languages/javascript/debug/model/JSDIScriptLoadBreakpoint.java
+++ b/bundles/org.eclipse.e4.languages.javascript.debug.model/src/org/eclipse/e4/languages/javascript/debug/model/JSDIScriptLoadBreakpoint.java
@@ -14,8 +14,8 @@
 import java.util.Map;
 
 import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.IWorkspaceRunnable;
+import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.Path;
@@ -45,19 +45,18 @@
 	/**
 	 * Constructor
 	 * 
-	 * @param resource
 	 * @param charstart
 	 * @param charend
 	 * @param attributes
 	 * @param register
 	 * @throws DebugException
 	 */
-	public JSDIScriptLoadBreakpoint(final IResource resource, final int charstart, final int charend, final Map attributes, final boolean register) throws DebugException {
+	public JSDIScriptLoadBreakpoint(final int charstart, final int charend, final Map attributes, final boolean register) throws DebugException {
 		IWorkspaceRunnable wr = new IWorkspaceRunnable() {
 			public void run(IProgressMonitor monitor) throws CoreException {
 
 				// create the marker
-				setMarker(resource.createMarker(JSDIBreakpoint.JSDI_SCRIPT_LOAD_BREAKPOINT));
+				setMarker(ResourcesPlugin.getWorkspace().getRoot().createMarker(JSDIBreakpoint.JSDI_SCRIPT_LOAD_BREAKPOINT));
 
 				// add attributes
 				attributes.put(IBreakpoint.ID, getModelIdentifier());
@@ -71,7 +70,7 @@
 				register(register);
 			}
 		};
-		run(getMarkerRule(resource), wr);
+		run(getMarkerRule(ResourcesPlugin.getWorkspace().getRoot()), wr);
 	}
 
 	/*
@@ -120,6 +119,20 @@
 	/*
 	 * (non-Javadoc)
 	 * 
+	 * @see org.eclipse.e4.languages.javascript.debug.model.JSDIBreakpoint#deregisterRequest(org.eclipse.e4.languages.javascript.debug.model.JSDIDebugTarget, org.eclipse.e4.languages.javascript.jsdi.request.EventRequest)
+	 */
+	protected void deregisterRequest(JSDIDebugTarget target, EventRequest request) {
+		target.removeJSDIEventListener(this, request);
+		try {
+			decrementInstallCount();
+		} catch (CoreException ce) {
+			// TODO log this
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see org.eclipse.e4.languages.javascript.debug.model.JSDIBreakpoint#eventSetComplete(org.eclipse.e4.languages.javascript.jsdi.event.Event, org.eclipse.e4.languages.javascript.debug.model.JSDIDebugTarget, boolean, org.eclipse.e4.languages.javascript.jsdi.event.EventSet)
 	 */
 	public void eventSetComplete(Event event, JSDIDebugTarget target, boolean suspend, EventSet eventSet) {
diff --git a/bundles/org.eclipse.e4.languages.javascript.debug.model/src/org/eclipse/e4/languages/javascript/debug/model/JSDIThread.java b/bundles/org.eclipse.e4.languages.javascript.debug.model/src/org/eclipse/e4/languages/javascript/debug/model/JSDIThread.java
index 298c3c9..e0b17cb 100644
--- a/bundles/org.eclipse.e4.languages.javascript.debug.model/src/org/eclipse/e4/languages/javascript/debug/model/JSDIThread.java
+++ b/bundles/org.eclipse.e4.languages.javascript.debug.model/src/org/eclipse/e4/languages/javascript/debug/model/JSDIThread.java
@@ -402,6 +402,7 @@
 	synchronized void markResumed() {
 		this.state = RUNNING;
 		clearFrames();
+		this.breakpoints.clear();
 	}
 
 	/**
diff --git a/bundles/org.eclipse.e4.languages.javascript.debug.ui/src/org/eclipse/e4/languages/internal/javascript/debug/ui/actions/AddScriptLoadBreakpointAction.java b/bundles/org.eclipse.e4.languages.javascript.debug.ui/src/org/eclipse/e4/languages/internal/javascript/debug/ui/actions/AddScriptLoadBreakpointAction.java
index 47e871f..2ff2fa6 100644
--- a/bundles/org.eclipse.e4.languages.javascript.debug.ui/src/org/eclipse/e4/languages/internal/javascript/debug/ui/actions/AddScriptLoadBreakpointAction.java
+++ b/bundles/org.eclipse.e4.languages.javascript.debug.ui/src/org/eclipse/e4/languages/internal/javascript/debug/ui/actions/AddScriptLoadBreakpointAction.java
@@ -65,7 +65,7 @@
 						attributes.put(JSDIBreakpoint.TYPE_NAME, scriptname);
 						attributes.put(JSDIBreakpoint.SCRIPT_PATH, scriptpath);
 						try {
-							new JSDIScriptLoadBreakpoint(ResourcesPlugin.getWorkspace().getRoot(), 0, 0, attributes, true);
+							new JSDIScriptLoadBreakpoint(0, 0, attributes, true);
 						}
 						catch(DebugException de) {
 							//TODO log this