Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(213)

Unified Diff: plugins/org.chromium.debug.core/src/org/chromium/debug/core/model/VProjectWorkspaceBridge.java

Issue 3402011: Support 'break on exception' feature (Closed)
Patch Set: follow codereview Created 10 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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() {

Powered by Google App Engine
This is Rietveld 408576698