|
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 } |