org.chromium.debug.ui/src/org/chromium/debug/ui/actions/V8ScriptAction.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.ui.actions;
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.ArrayList;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     8
import java.util.List;
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.debug.core.model.DebugTargetImpl;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    11
import org.chromium.debug.core.model.VmResource;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    12
import org.chromium.debug.core.util.ChromiumDebugPluginUtil;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    13
import org.chromium.sdk.JavascriptVm;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    14
import org.eclipse.core.resources.IFile;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    15
import org.eclipse.core.resources.IResource;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    16
import org.eclipse.core.resources.IResourceVisitor;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    17
import org.eclipse.core.resources.mapping.ResourceMapping;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    18
import org.eclipse.core.runtime.CoreException;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    19
import org.eclipse.jface.action.IAction;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    20
import org.eclipse.jface.viewers.ISelection;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    21
import org.eclipse.jface.viewers.IStructuredSelection;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    22
import org.eclipse.swt.widgets.Event;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    23
import org.eclipse.ui.IActionDelegate2;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    24
import org.eclipse.ui.IObjectActionDelegate;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    25
import org.eclipse.ui.IWorkbenchPart;
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
/**
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    28
 * A base class for all LiveEdit actions that are scoped to a working file from user workspace.
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    29
 * It makes all necessary checks and prepares data in form of {@link FilePair} class.
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    30
 * The concrete actions implement the {@link #execute(FilePair)} method.
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    31
 */
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    32
abstract class V8ScriptAction implements IObjectActionDelegate, IActionDelegate2 {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    33
  private Runnable currentRunnable = null;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    34
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    35
  public void setActivePart(IAction action, IWorkbenchPart targetPart) {
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 void run(IAction action) {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    39
    if (currentRunnable == null) {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    40
      return;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    41
    }
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    42
    currentRunnable.run();
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    43
    currentRunnable = null;
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 void selectionChanged(IAction action, ISelection selection) {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    47
    currentRunnable = createRunnable(selection);
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    48
    action.setEnabled(currentRunnable != null);
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    49
  }
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
  private Runnable createRunnable(ISelection selection) {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    52
    if (selection instanceof IStructuredSelection == false) {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    53
      return null;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    54
    }
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    55
    IStructuredSelection structured = (IStructuredSelection) selection;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    56
    if (structured.size() != 1) {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    57
      return null;
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
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    60
    Object firstElement = structured.getFirstElement();
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    61
    if (firstElement instanceof ResourceMapping == false) {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    62
      return null;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    63
    }
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    64
    ResourceMapping resourceMapping = (ResourceMapping) firstElement;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    65
    final List<IResource> resourceList = new ArrayList<IResource>(1);
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    66
    IResourceVisitor visitor = new IResourceVisitor() {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    67
      public boolean visit(IResource resource) throws CoreException {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    68
        resourceList.add(resource);
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    69
        return false;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    70
      }
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    71
    };
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    72
    try {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    73
      resourceMapping.accept(null, visitor, null);
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    74
    } catch (CoreException e) {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    75
      throw new RuntimeException(e);
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    76
    }
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    77
    if (resourceList.size() != 1) {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    78
      return null;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    79
    }
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    80
    if (resourceList.get(0) instanceof IFile == false) {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    81
      return null;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    82
    }
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    83
    final IFile file = (IFile) resourceList.get(0);
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    84
    if (!filterFileName(file.getName())) {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    85
      return null;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    86
    }
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    87
    return new Runnable() {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    88
      public void run() {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    89
        try {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    90
          execute(file);
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    91
        } catch (RuntimeException e) {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    92
          // TODO(peter.rybin): Handle it.
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    93
          throw e;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    94
        }
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    95
      }
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    96
    };
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    97
  }
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    98
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    99
  private void execute(IFile file) {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   100
    List<? extends FilePair> filePairList = getFilePairs(file);
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   101
    FilePair filePair = getSingleFilePair(filePairList);
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   102
    execute(filePair);
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   103
  }
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   104
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   105
  protected abstract void execute(FilePair filePair);
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   106
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   107
  /**
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   108
   * A temporary method that excludes all cases when there are more than one file pair for a
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   109
   * user file. The proper solution ought to provide a UI for user so that he could review
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   110
   * which debug sessions should be included in action.
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   111
   */
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   112
  private static FilePair getSingleFilePair(List<? extends FilePair> pairs) {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   113
    if (pairs.size() == 0) {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   114
      throw new RuntimeException("File is not associated with any V8 VM");
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   115
    }
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   116
    if (pairs.size() != 1) {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   117
      throw new RuntimeException(
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   118
          "File is associated with several V8 VMs, this is not supported yet.");
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   119
    }
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   120
    return pairs.get(0);
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   121
  }
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   122
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   123
  /**
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   124
   * Finds all file pairs for a user working file. One working file may correspond to several
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   125
   * scripts if there are more than one debug sessions.
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   126
   */
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   127
  private static List<? extends FilePair> getFilePairs(IFile localFile) {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   128
    List<DebugTargetImpl> targetList = DebugTargetImpl.getAllDebugTargetImpls();
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   129
    ArrayList<FilePair> result = new ArrayList<FilePair>(targetList.size());
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   130
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   131
    for (DebugTargetImpl target : targetList) {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   132
      VmResource script;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   133
      try {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   134
        script = target.getVmResource(localFile);
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   135
      } catch (CoreException e) {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   136
        throw new RuntimeException("Failed to resolve script from the file " + localFile, e);
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   137
      }
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   138
      if (script == null) {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   139
        continue;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   140
      }
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   141
      result.add(new FilePair(localFile, script, target));
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   142
    }
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   143
    return result;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   144
  }
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   145
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   146
  protected static class FilePair {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   147
    private final IFile file;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   148
    private final VmResource vmResource;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   149
    private final DebugTargetImpl debugTargetImpl;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   150
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   151
    FilePair(IFile file, VmResource vmResource, DebugTargetImpl debugTargetImpl) {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   152
      this.file = file;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   153
      this.vmResource = vmResource;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   154
      this.debugTargetImpl = debugTargetImpl;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   155
    }
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   156
    protected IFile getFile() {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   157
      return file;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   158
    }
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   159
    protected VmResource getVmResource() {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   160
      return vmResource;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   161
    }
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   162
    protected JavascriptVm getJavascriptVm() {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   163
      return debugTargetImpl.getJavascriptEmbedder().getJavascriptVm();
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   164
    }
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   165
    protected DebugTargetImpl getDebugTarget() {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   166
      return debugTargetImpl;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   167
    }
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   168
  }
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   169
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   170
  /**
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   171
   * @return true if action should be enabled for this file name
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   172
   */
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   173
  private boolean filterFileName(String name) {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   174
    for (String suffix : ChromiumDebugPluginUtil.SUPPORTED_EXTENSIONS_SUFFIX_LIST) {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   175
      if (name.endsWith(suffix)) {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   176
        return true;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   177
      }
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   178
    }
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   179
    return false;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   180
  }
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   181
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   182
  public void dispose() {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   183
    currentRunnable = null;
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   184
  }
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   185
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   186
  public void init(IAction action) {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   187
  }
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   188
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   189
  public void runWithEvent(IAction action, Event event) {
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   190
    run(action);
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   191
  }
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   192
}
8726e95bcbba Initial commit of updated Chrome Java SDK
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   193