org.chromium.debug.core/src/org/chromium/debug/core/model/BreakpointMap.java
changeset 355 8726e95bcbba
equal deleted inserted replaced
354:0bceeb415e7f 355:8726e95bcbba
       
     1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
       
     2 // Use of this source code is governed by a BSD-style license that can be
       
     3 // found in the LICENSE file.
       
     4 
       
     5 package org.chromium.debug.core.model;
       
     6 
       
     7 import java.util.HashMap;
       
     8 import java.util.Map;
       
     9 
       
    10 import org.chromium.sdk.Breakpoint;
       
    11 
       
    12 /**
       
    13  * TODO(peter.rybin): this class is obsolete, it only holds useful inner class;
       
    14  * consider removing this class.
       
    15  */
       
    16 public class BreakpointMap {
       
    17 
       
    18   /**
       
    19    * A one-to-one map between SDK and UI breakpoints inside one debug target.
       
    20    */
       
    21   public static class InTargetMap {
       
    22     private final Map<Breakpoint, ChromiumLineBreakpoint> sdkToUiMap =
       
    23         new HashMap<Breakpoint, ChromiumLineBreakpoint>();
       
    24     private final Map<ChromiumLineBreakpoint, Breakpoint> uiToSdkMap =
       
    25       new HashMap<ChromiumLineBreakpoint, Breakpoint>();
       
    26 
       
    27     public InTargetMap() {
       
    28     }
       
    29 
       
    30     public synchronized Breakpoint getSdkBreakpoint(ChromiumLineBreakpoint chromiumLineBreakpoint) {
       
    31       return uiToSdkMap.get(chromiumLineBreakpoint);
       
    32     }
       
    33 
       
    34     public synchronized ChromiumLineBreakpoint getUiBreakpoint(Breakpoint sdkBreakpoint) {
       
    35       return sdkToUiMap.get(sdkBreakpoint);
       
    36     }
       
    37 
       
    38     public synchronized void add(Breakpoint sdkBreakpoint, ChromiumLineBreakpoint uiBreakpoint) {
       
    39       Object conflict1 = uiToSdkMap.put(uiBreakpoint, sdkBreakpoint);
       
    40       Object conflict2 = sdkToUiMap.put(sdkBreakpoint, uiBreakpoint);
       
    41       if (conflict1 != null || conflict2 != null) {
       
    42         throw new RuntimeException();
       
    43       }
       
    44     }
       
    45 
       
    46     public synchronized void remove(ChromiumLineBreakpoint lineBreakpoint) {
       
    47       Breakpoint sdkBreakpoint = uiToSdkMap.remove(lineBreakpoint);
       
    48       if (sdkBreakpoint == null) {
       
    49         throw new RuntimeException();
       
    50       }
       
    51       sdkToUiMap.remove(sdkBreakpoint);
       
    52     }
       
    53 
       
    54     public synchronized void clear() {
       
    55       sdkToUiMap.clear();
       
    56       uiToSdkMap.clear();
       
    57     }
       
    58   }
       
    59 }