| Index: editor/tools/plugins/com.google.dart.tools.debug.core/src/com/google/dart/tools/debug/core/server/ServerDebugTarget.java
|
| diff --git a/editor/tools/plugins/com.google.dart.tools.debug.core/src/com/google/dart/tools/debug/core/server/ServerDebugTarget.java b/editor/tools/plugins/com.google.dart.tools.debug.core/src/com/google/dart/tools/debug/core/server/ServerDebugTarget.java
|
| index 99a9e38de3fe242214c023e5ca5b95f3f09c7d40..0e35967a48667769484b318a61b9d158636bb15c 100644
|
| --- a/editor/tools/plugins/com.google.dart.tools.debug.core/src/com/google/dart/tools/debug/core/server/ServerDebugTarget.java
|
| +++ b/editor/tools/plugins/com.google.dart.tools.debug.core/src/com/google/dart/tools/debug/core/server/ServerDebugTarget.java
|
| @@ -16,10 +16,8 @@ package com.google.dart.tools.debug.core.server;
|
|
|
| import com.google.dart.tools.core.NotYetImplementedException;
|
| import com.google.dart.tools.debug.core.DartDebugCorePlugin;
|
| -import com.google.dart.tools.debug.core.DartDebugCorePlugin.BreakOnExceptions;
|
| import com.google.dart.tools.debug.core.DartLaunchConfigWrapper;
|
| import com.google.dart.tools.debug.core.breakpoints.DartBreakpoint;
|
| -import com.google.dart.tools.debug.core.server.VmConnection.BreakOnExceptionsType;
|
|
|
| import org.apache.commons.lang3.StringUtils;
|
| import org.eclipse.core.resources.IFile;
|
| @@ -27,6 +25,9 @@ import org.eclipse.core.resources.IMarkerDelta;
|
| import org.eclipse.core.resources.IProject;
|
| import org.eclipse.core.runtime.IStatus;
|
| import org.eclipse.core.runtime.Status;
|
| +import org.eclipse.core.runtime.preferences.IEclipsePreferences;
|
| +import org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener;
|
| +import org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent;
|
| import org.eclipse.debug.core.DebugException;
|
| import org.eclipse.debug.core.DebugPlugin;
|
| import org.eclipse.debug.core.IBreakpointManager;
|
| @@ -76,6 +77,9 @@ public class ServerDebugTarget extends ServerDebugElement implements IDebugTarge
|
|
|
| private IProject currentProject;
|
|
|
| + private IEclipsePreferences preferences;
|
| + private IPreferenceChangeListener preferenceListener;
|
| +
|
| public ServerDebugTarget(ILaunch launch, IProcess process, int connectionPort) {
|
| this(launch, process, null, connectionPort);
|
| }
|
| @@ -89,14 +93,24 @@ public class ServerDebugTarget extends ServerDebugElement implements IDebugTarge
|
| this.launch = launch;
|
| this.process = process;
|
|
|
| - breakpointManager = new ServerBreakpointManager(this);
|
| -
|
| DartLaunchConfigWrapper wrapper = new DartLaunchConfigWrapper(launch.getLaunchConfiguration());
|
|
|
| currentProject = wrapper.getProject();
|
|
|
| connection = new VmConnection(connectionHost, connectionPort);
|
| connection.addListener(this);
|
| +
|
| + breakpointManager = new ServerBreakpointManager(this);
|
| +
|
| + // listen for preference changes
|
| + preferences = DartDebugCorePlugin.getPlugin().getPrefs();
|
| + preferenceListener = new IPreferenceChangeListener() {
|
| + @Override
|
| + public void preferenceChange(PreferenceChangeEvent event) {
|
| + handlePreferenceChange(event);
|
| + }
|
| + };
|
| + preferences.addPreferenceChangeListener(preferenceListener);
|
| }
|
|
|
| @Override
|
| @@ -330,13 +344,7 @@ public class ServerDebugTarget extends ServerDebugElement implements IDebugTarge
|
| DartDebugCorePlugin.logError(e);
|
| }
|
|
|
| - // TODO(devoncarew): listen for changes to DartDebugCorePlugin.PREFS_BREAK_ON_EXCEPTIONS
|
| - // Turn on break-on-exceptions.
|
| - try {
|
| - connection.setPauseOnExceptionSync(isolate, getPauseType());
|
| - } catch (IOException e) {
|
| - DartDebugCorePlugin.logError(e);
|
| - }
|
| + breakpointManager.setPauseOnExceptionSync(isolate);
|
| }
|
|
|
| @Override
|
| @@ -438,6 +446,8 @@ public class ServerDebugTarget extends ServerDebugElement implements IDebugTarge
|
| }
|
|
|
| private void dispose() {
|
| + preferences.removePreferenceChangeListener(preferenceListener);
|
| +
|
| if (connection != null) {
|
| connection.handleTerminated();
|
| }
|
| @@ -503,17 +513,11 @@ public class ServerDebugTarget extends ServerDebugElement implements IDebugTarge
|
| return null;
|
| }
|
|
|
| - private BreakOnExceptionsType getPauseType() {
|
| - final BreakOnExceptions boe = DartDebugCorePlugin.getPlugin().getBreakOnExceptions();
|
| - BreakOnExceptionsType pauseType = BreakOnExceptionsType.none;
|
| -
|
| - if (boe == BreakOnExceptions.uncaught) {
|
| - pauseType = BreakOnExceptionsType.unhandled;
|
| - } else if (boe == BreakOnExceptions.all) {
|
| - pauseType = BreakOnExceptionsType.all;
|
| + private void handlePreferenceChange(PreferenceChangeEvent event) {
|
| + String key = event.getKey();
|
| + if (DartDebugCorePlugin.PREFS_BREAK_ON_EXCEPTIONS.equals(key)) {
|
| + breakpointManager.setPauseOnExceptionForLiveIsolates();
|
| }
|
| -
|
| - return pauseType;
|
| }
|
|
|
| private boolean hasBreakpointAtTopFrame(List<VmCallFrame> frames) {
|
| @@ -571,5 +575,4 @@ public class ServerDebugTarget extends ServerDebugElement implements IDebugTarge
|
| } catch (Exception exception) {
|
| }
|
| }
|
| -
|
| }
|
|
|