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

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

Issue 7235005: Add intermediate VmResourceRef for inaccurate source lookup (Closed) Base URL: https://chromedevtools.googlecode.com/svn/trunk
Patch Set: clean Created 9 years, 6 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 f7ae6c7b6d8e83160cf5b74f3ac5af415ed31165..255522297d37117894e97922b2c56471e7721e01 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
@@ -13,16 +13,15 @@ import java.util.Map;
import org.chromium.debug.core.ChromiumDebugPlugin;
import org.chromium.debug.core.ChromiumSourceDirector;
import org.chromium.debug.core.model.BreakpointSynchronizer.Callback;
-import org.chromium.debug.core.model.JavascriptThread.ResumeReason;
import org.chromium.debug.core.model.VmResource.Metadata;
import org.chromium.debug.core.util.ChromiumDebugPluginUtil;
import org.chromium.sdk.Breakpoint;
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.JavascriptVm.ScriptsCallback;
+import org.chromium.sdk.RelayOk;
import org.chromium.sdk.Script;
import org.chromium.sdk.SyncCallback;
import org.eclipse.core.resources.IFile;
@@ -136,15 +135,23 @@ public class VProjectWorkspaceBridge implements WorkspaceBridge {
});
}
- public Collection<? extends VmResource> findVmResourceFromWorkspaceFile(IFile resource)
+ public Collection<? extends VmResource> findVmResourcesFromWorkspaceFile(IFile resource)
throws CoreException {
- VmResourceId id = findVmResourceIdFromWorkspaceFile(resource);
- if (id == null) {
+ VmResourceRef vmResourceRef = findVmResourceRefFromWorkspaceFile(resource);
+ if (vmResourceRef == null) {
return null;
}
- return Collections.singletonList(resourceManager.getVmResource(id));
+ return vmResourceRef.accept(RESOLVE_RESOURCE_VISITOR);
}
+ private final VmResourceRef.Visitor<Collection<? extends VmResource>> RESOLVE_RESOURCE_VISITOR =
+ new VmResourceRef.Visitor<Collection<? extends VmResource>>() {
+ @Override
+ public Collection<? extends VmResource> visitResourceId(VmResourceId resourceId) {
+ return Collections.singletonList(resourceManager.getVmResource(resourceId));
+ }
+ };
+
public VmResource getVProjectVmResource(IFile file) {
VmResourceId resourceId = resourceManager.getResourceId(file);
if (resourceId == null) {
@@ -158,8 +165,8 @@ public class VProjectWorkspaceBridge implements WorkspaceBridge {
return resourceManager.createTemporaryFile(metadata, proposedFileName);
}
- private VmResourceId findVmResourceIdFromWorkspaceFile(IFile resource) throws CoreException {
- return sourceDirector.findVmResource(resource);
+ private VmResourceRef findVmResourceRefFromWorkspaceFile(IFile resource) throws CoreException {
+ return sourceDirector.findVmResourceRef(resource);
}
public void reloadScript(Script script) {
@@ -226,25 +233,31 @@ public class VProjectWorkspaceBridge implements WorkspaceBridge {
return;
}
IFile file = (IFile) lineBreakpoint.getInner().getMarker().getResource();
- VmResourceId vmResourceId;
+ VmResourceRef vmResourceRef;
try {
- vmResourceId = findVmResourceIdFromWorkspaceFile(file);
+ vmResourceRef = findVmResourceRefFromWorkspaceFile(file);
} catch (CoreException e) {
ChromiumDebugPlugin.log(
new Exception("Failed to resolve script for the file " + file, e)); //$NON-NLS-1$
return;
}
- if (vmResourceId == null) {
+ if (vmResourceRef == null) {
// Might be a script from a different debug target
return;
}
- createBreakpointOnRemote(lineBreakpoint, vmResourceId, null, null);
+ try {
+ createBreakpointOnRemote(lineBreakpoint, vmResourceRef, null, null);
+ } catch (CoreException e) {
+ ChromiumDebugPlugin.log(new Exception("Failed to create breakpoint in " + //$NON-NLS-1$
+ getTargetNameSafe(), e));
+ throw new RuntimeException(e);
+ }
}
- public void createBreakpointOnRemote(final WrappedBreakpoint lineBreakpoint,
- final VmResourceId vmResourceId,
- final CreateCallback createCallback, SyncCallback syncCallback) {
+ public RelayOk createBreakpointOnRemote(final WrappedBreakpoint lineBreakpoint,
+ final VmResourceRef vmResourceRef,
+ final CreateCallback createCallback, SyncCallback syncCallback) throws CoreException {
ChromiumLineBreakpoint.Helper.CreateOnRemoveCallback callback =
new ChromiumLineBreakpoint.Helper.CreateOnRemoveCallback() {
public void success(Breakpoint breakpoint) {
@@ -261,13 +274,8 @@ public class VProjectWorkspaceBridge implements WorkspaceBridge {
}
}
};
- try {
- ChromiumLineBreakpoint.Helper.createOnRemote(lineBreakpoint, vmResourceId,
- connectedTargetData, callback, syncCallback);
- } catch (CoreException e) {
- ChromiumDebugPlugin.log(new Exception("Failed to create breakpoint in " + //$NON-NLS-1$
- getTargetNameSafe(), e));
- }
+ return ChromiumLineBreakpoint.Helper.createOnRemote(lineBreakpoint, vmResourceRef,
+ connectedTargetData, callback, syncCallback);
}
public void breakpointChanged(IBreakpoint breakpoint, IMarkerDelta delta) {

Powered by Google App Engine
This is Rietveld 408576698