| Index: plugins/org.chromium.debug.core/src/org/chromium/debug/core/model/BreakpointSynchronizer.java
 | 
| diff --git a/plugins/org.chromium.debug.core/src/org/chromium/debug/core/model/BreakpointSynchronizer.java b/plugins/org.chromium.debug.core/src/org/chromium/debug/core/model/BreakpointSynchronizer.java
 | 
| index a9e1467ef7225788ee0798c0b95fa0082a2fc46d..2f8d517e301b71f2d975b681fbe348efdea01e4d 100644
 | 
| --- a/plugins/org.chromium.debug.core/src/org/chromium/debug/core/model/BreakpointSynchronizer.java
 | 
| +++ b/plugins/org.chromium.debug.core/src/org/chromium/debug/core/model/BreakpointSynchronizer.java
 | 
| @@ -4,6 +4,8 @@
 | 
|  
 | 
|  package org.chromium.debug.core.model;
 | 
|  
 | 
| +import static org.chromium.debug.core.util.ChromiumDebugPluginUtil.getSafe;
 | 
| +
 | 
|  import java.util.ArrayList;
 | 
|  import java.util.Collection;
 | 
|  import java.util.Collections;
 | 
| @@ -18,7 +20,6 @@ import java.util.concurrent.atomic.AtomicInteger;
 | 
|  import org.chromium.debug.core.ChromiumDebugPlugin;
 | 
|  import org.chromium.debug.core.ChromiumSourceDirector;
 | 
|  import org.chromium.sdk.Breakpoint;
 | 
| -import org.chromium.sdk.BreakpointTypeExtension;
 | 
|  import org.chromium.sdk.CallbackSemaphore;
 | 
|  import org.chromium.sdk.JavascriptVm;
 | 
|  import org.chromium.sdk.SyncCallback;
 | 
| @@ -218,6 +219,9 @@ public class BreakpointSynchronizer {
 | 
|      for (Breakpoint sdkBreakpoint : sdkBreakpointsToCreate) {
 | 
|        Object sourceElement = sourceDirector.getSourceElement(sdkBreakpoint);
 | 
|        if (sourceElement instanceof IFile == false) {
 | 
| +        statusBuilder.getReportBuilder().addProblem(
 | 
| +            ReportBuilder.Problem.UNRESOLVED_REMOTE_BREAKPOINT,
 | 
| +            sdkBreakpoint.getTarget().accept(BREAKPOINT_DEBUG_DESTINATION_VISITOR));
 | 
|          continue;
 | 
|        }
 | 
|        // We do not actually support working files for scripts with offset.
 | 
| @@ -255,6 +259,20 @@ public class BreakpointSynchronizer {
 | 
|      }
 | 
|    }
 | 
|  
 | 
| +  private static final Breakpoint.Target.Visitor<String> BREAKPOINT_DEBUG_DESTINATION_VISITOR =
 | 
| +      new Breakpoint.Target.Visitor<String>() {
 | 
| +        @Override public String visitScriptName(String scriptName) {
 | 
| +          return "script_name=" + scriptName;
 | 
| +        }
 | 
| +        @Override public String visitScriptId(long scriptId) {
 | 
| +          return "script_id" + scriptId;
 | 
| +        }
 | 
| +        @Override public String visitUnknown(Breakpoint.Target target) {
 | 
| +          return "Unknown target: + " + target;
 | 
| +        }
 | 
| +      };
 | 
| +
 | 
| +
 | 
|    private static class BreakpointMerger extends Merger<WrappedBreakpoint, Breakpoint> {
 | 
|      private final Direction direction;
 | 
|      private final List<WrappedBreakpoint> missingUi = new ArrayList<WrappedBreakpoint>();
 | 
| @@ -396,8 +414,16 @@ public class BreakpointSynchronizer {
 | 
|        }
 | 
|      }
 | 
|  
 | 
| +    enum Problem {
 | 
| +      UNRESOLVED_REMOTE_BREAKPOINT;
 | 
| +      String getVisibleName() {
 | 
| +        return toString();
 | 
| +      }
 | 
| +    }
 | 
| +
 | 
|      private final Direction direction;
 | 
|      private final Map<Property, AtomicInteger> counters;
 | 
| +    private final Map<Problem, List<String>> problems;
 | 
|  
 | 
|      ReportBuilder(Direction direction) {
 | 
|        this.direction = direction;
 | 
| @@ -405,12 +431,22 @@ public class BreakpointSynchronizer {
 | 
|        for (Property property : Property.class.getEnumConstants()) {
 | 
|          counters.put(property, new AtomicInteger(0));
 | 
|        }
 | 
| +      problems = new HashMap<Problem, List<String>>(1);
 | 
|      }
 | 
|  
 | 
|      public void increment(Property property) {
 | 
|        counters.get(property).addAndGet(1);
 | 
|      }
 | 
|  
 | 
| +    public synchronized void addProblem(Problem problem, String message) {
 | 
| +      List<String> list = getSafe(problems, problem);
 | 
| +      if (list == null) {
 | 
| +        list = new ArrayList<String>();
 | 
| +        problems.put(problem, list);
 | 
| +      }
 | 
| +      list.add(message);
 | 
| +    }
 | 
| +
 | 
|      public String build() {
 | 
|        StringBuilder builder = new StringBuilder();
 | 
|        builder.append("direction=").append(direction); //$NON-NLS-1$
 | 
| @@ -422,6 +458,9 @@ public class BreakpointSynchronizer {
 | 
|          builder.append(" ").append(en.getKey().getVisibleName()); //$NON-NLS-1$
 | 
|          builder.append("=").append(number); //$NON-NLS-1$
 | 
|        }
 | 
| +      if (!problems.isEmpty()) {
 | 
| +        builder.append('\n').append(problems.toString());
 | 
| +      }
 | 
|        return builder.toString();
 | 
|      }
 | 
|    }
 | 
| @@ -484,12 +523,12 @@ public class BreakpointSynchronizer {
 | 
|          new Breakpoint.Target.Visitor<VmResourceId>() {
 | 
|            @Override
 | 
|            public VmResourceId visitScriptName(String scriptName) {
 | 
| -            return VmResourceId.forName(scriptName);
 | 
| +            return new VmResourceId(scriptName, null);
 | 
|            }
 | 
|  
 | 
|            @Override
 | 
|            public VmResourceId visitScriptId(long scriptId) {
 | 
| -            return VmResourceId.forId(scriptId);
 | 
| +            return new VmResourceId(null, scriptId);
 | 
|            }
 | 
|  
 | 
|            @Override
 | 
| 
 |