Index: plugins/org.chromium.debug.core/src/org/chromium/debug/core/model/VProjectWorkspaceBridge.java |
diff --git a/plugins/org.chromium.debug.core/src/org/chromium/debug/core/model/VProjectWorkspaceBridge.java b/plugins/org.chromium.debug.core/src/org/chromium/debug/core/model/VProjectWorkspaceBridge.java |
index e7aff209a2d719c4c66a2dbbcf693a4b63c85c80..1794b4e2e3d62a6befb6b10d21310aa08af72a0e 100644 |
--- a/plugins/org.chromium.debug.core/src/org/chromium/debug/core/model/VProjectWorkspaceBridge.java |
+++ b/plugins/org.chromium.debug.core/src/org/chromium/debug/core/model/VProjectWorkspaceBridge.java |
@@ -5,7 +5,10 @@ |
package org.chromium.debug.core.model; |
import java.util.Collection; |
+import java.util.Collections; |
+import java.util.EnumMap; |
import java.util.List; |
+import java.util.Map; |
import org.chromium.debug.core.ChromiumDebugPlugin; |
import org.chromium.debug.core.ChromiumSourceDirector; |
@@ -16,6 +19,7 @@ import org.chromium.sdk.CallFrame; |
import org.chromium.sdk.DebugContext; |
import org.chromium.sdk.ExceptionData; |
import org.chromium.sdk.JavascriptVm; |
+import org.chromium.sdk.JavascriptVm.ExceptionCatchType; |
import org.chromium.sdk.Script; |
import org.chromium.sdk.SyncCallback; |
import org.chromium.sdk.JavascriptVm.ScriptsCallback; |
@@ -155,6 +159,10 @@ public class VProjectWorkspaceBridge implements WorkspaceBridge { |
private class BreakpointHandlerImpl implements BreakpointHandler, |
BreakpointSynchronizer.BreakpointHelper { |
+ private final Map<JavascriptVm.ExceptionCatchType, Boolean> breakExceptionState = |
+ Collections.synchronizedMap(new EnumMap<JavascriptVm.ExceptionCatchType, Boolean>( |
+ JavascriptVm.ExceptionCatchType.class)); |
+ |
private final EnablementMonitor enablementMonitor = new EnablementMonitor(); |
private class EnablementMonitor { |
@@ -338,6 +346,27 @@ public class VProjectWorkspaceBridge implements WorkspaceBridge { |
return "<unknown>"; //$NON-NLS-1$ |
} |
} |
+ |
+ public Boolean getBreakExceptionState(ExceptionCatchType catchType) { |
+ return breakExceptionState.get(catchType); |
+ } |
+ |
+ public void setBreakExceptionState(final ExceptionCatchType catchType, |
+ boolean value) { |
+ JavascriptVm.SetValueCallback<Boolean> callback = |
+ new JavascriptVm.SetValueCallback<Boolean>() { |
+ public void success(Boolean newValue) { |
+ breakExceptionState.put(catchType, newValue); |
+ } |
+ public void failure(Exception exception) { |
+ ChromiumDebugPlugin.log(new Exception( |
+ "Failed to set 'break on exception' value", exception)); |
+ } |
+ }; |
+ javascriptVm.setBreakOnException(catchType, value, callback, null); |
+ } |
+ |
+ |
} |
private final static JsLabelProvider LABEL_PROVIDER = new JsLabelProvider() { |