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